PyTorchで Residual Block を記述する場合、一般的には init() 関数にSequentialで定義しますが、以下のような基本的な書き方と比べた場合、実行する際にメモリや処理速度などを含めて何か違いはありますか?
Python
1# Residual block 疑似コード 2class ResidualBlock(nn.Module): 3 def __init__(self, in_channels, out_channels): 4 super(ResidualBlock, self).__init__() 5 self.conv1 = nn.Conv2d(in_channels, out_channels, kernel_size=3) 6 self.bn1 = nn.BatchNorm2d(out_channels) 7 self.relu = nn.ReLU(inplace=True) 8 self.conv2 = nn.Conv2d(in_channels, out_channels, kernel_size=3) 9 self.bn2 = nn.BatchNorm2d(out_channels) 10 11 def forward(self, x): 12 residual = x 13 out = self.conv1(x) 14 out = self.bn1(out) 15 out = self.relu(out) 16 out = self.conv2(out) 17 out = self.bn2(out) 18 out += residual 19 out = self.relu(out) 20 return out
あなたの回答
tips
プレビュー