Pytorchシリーズ1:torch.nn.Sequential()説明


torch.nn.SequentialSequentialコンテナであり、モジュールは構造関数で伝達される順序でモジュールに追加される.通俗的に言えば、自分のニーズに応じて、異なる関数を1つの(小さな)モジュールに組み合わせて使用したり、組み合わせたモジュールを自分のネットワークに追加したりすることです.主に2つの方法があります.
#      
conv_module = nn.Sequential(
          nn.Conv2d(1,20,5),
          nn.ReLU(),
          nn.Conv2d(20,64,5),
          nn.ReLU()
        )

#        
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv_module = nn.Sequential(
          nn.Conv2d(1,20,5),
          nn.ReLU(),
          nn.Conv2d(20,64,5),
          nn.ReLU()
        )

    def forward(self, input):
        out = self.conv_module(input)
        return out

別の方法:
#        ,      
#         
conv_module = nn.Sequential(OrderedDict([
          ('conv1', nn.Conv2d(1,20,5)),
          ('relu1', nn.ReLU()),
          ('conv2', nn.Conv2d(20,64,5)),
          ('relu2', nn.ReLU())
        ]))

torch.nn.Sequentialとtorch.nn.Moduleの違いと選択
  • torch.nn.Moduleを使用すると、RNNなどの
  • のような伝播プロセスを自分のニーズに応じて変更することができます.
  • 迅速な構築が必要な場合、またはあまり多くのプロセスが必要ない場合は、torch.nn.Sequentialを直接使用します.