- 获取链接
- X
- 电子邮件
- 其他应用
- 获取链接
- X
- 电子邮件
- 其他应用
输入(batch_size, in_channel, H, W)
经过nn.ConvTranspose2d(in_channel, out_channel, kernel_size, stride, padding)
输出(batch_size, out_channel, (H-1)*stride + kernel_size - 2* padding)
下面的示例代码展示了如何从256的tensor变为,(32,512,512)大小的特征。
通常可以应用到人体的逆蒙皮权重的学习中。后续通过F.grid_sample来采样权重。
class Feature_plane(nn.Module):
def __init__(self):
super(Feature_plane, self).__init__()
self.fc = nn.Sequential(
nn.Linear(256, 1024),
nn.ReLU(inplace=True)
)
self.conv = nn.Sequential(
nn.ConvTranspose2d(1024, 512, kernel_size=4, stride=2, padding=0),
nn.BatchNorm2d(512),
nn.ReLU(inplace=True),
nn.ConvTranspose2d(512, 256, kernel_size=4, stride=4, padding=0),
nn.BatchNorm2d(256),
nn.ReLU(inplace=True),
nn.ConvTranspose2d(256, 128, kernel_size=4, stride=4, padding=0),
nn.BatchNorm2d(128),
nn.ReLU(inplace=True),
nn.ConvTranspose2d(128, 64, kernel_size=4, stride=4, padding=0),
nn.BatchNorm2d(64),
nn.ReLU(inplace=True),
nn.ConvTranspose2d(64, 32, kernel_size=4, stride=2, padding=0),
nn.Tanh()
)
def forward(self, x):
x = self.fc(x)
# x = x.view(-1, 64, 4, 4)
x = x.view(-1, 1024, 1, 1)
x = self.conv(x)
# print("x3",x.shape)
# exit()
return x
评论
发表评论