问题描述:
pytoch中没有像tensorflow里面,卷积层的padding设置为same之类的操作。而且论文当中很多都不会写padding设置是多少。现在我来记录一下如何根据模型来计算出每个卷积层的padding值的设置。
一般来讲,根据卷积的原理,输入的大小和输出的大小之间的关系由如下公式表示:
out_size=(input_size - kernerl_size + 2*padding)/stride +1
在GitHub上我看到一个模型,标注了每个输入的size大小。可以很好的作为一个例子:
class NetD(nn.Module):
def __init__(self):
super(_NetD, self).__init__()
self.features = nn.Sequential(
# input is (3) x 96 x 96
nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3, stride=1, padding=1, bias=False),
nn.LeakyReLU(0.2, inplace=True),
# state size. (64) x 96 x 96
nn.Conv2d(in_channels=64, out_channels=64, kernel_size=4, stride=2, padding=1, bias=False),
nn.BatchNorm2d(64),
nn.LeakyReLU(0.2, inplace=True)