【Pytorch】Sequentialクラスと自作クラスの違い

『PyTorch』とは、Facebookが開発を主導したPython向けの機械学習ライブラリです。今回はPytorchのSequentialと自作のクラスの違いについてみていきたいと思います。

目次

はじめに

『PyTorch』とは、Facebookが開発を主導したPython向けの機械学習ライブラリです。

今回はPytorchのSequentialと自作のクラスの違いについてみていきたいと思います。

Sequentialクラスとは

Sequentialクラスを使うことで、レイヤー(層)やその他のモジュールを順番に積み重ねることができ、一連の操作を直線的に実行するモデルを構築することができます。

自作のクラスを作る理由

Sequentialクラスはデータに応じてネットワークを変更するなどの複雑なネットワークを定義することはできません。そのような場合に自作のクラスを作成します。

Sequentialクラス

以下はSequentialクラスの記述方法です。

【In】

nn.Sequential{
    nn.Linear(1000,100),
    nn.ReLU(),
    nn.Linear(100,10)
}

【Out】

Sequential(

     (0): Linear(in_features = 1000, out_features = 100, bias = True)

      (1): ReLU()

      (2): Linear(in_features = 100, out_features = 10, bias = True)

)

 

ReLUは近年多く利用されている活性化関数です。

自作のクラス

以下は自作クラスの記述方法です。

【In】

class Net(nn.Module):

  def __init__(self):
    super(Net,self).__init__()
    self.linear1 = nn.Linear(1000,100)
    self.lienar2 = nn.Linear(100,10)

  def forward(self,x):
    x = F.relu(self,x):
    x = self.linear2(x)
    return x

net = Net()
print(net) 

Net(

     (linear1): Linear(in_features = 1000, out_features = 10, bias = True)

      (linear2): Linear(in_features = 100, out_features = 10, bias = True)

 

自作クラスを作成する際には、nn.Moduleからクラスを継承し、__init__で初期化します。

順伝播の計算はforwardに記述します。そうすることで自動微分まで可能になります。

まとめ

今回はPytorchのSequentialクラスと自作のクラスの違いについてみていきました。

自作のクラスを作成することで、より複雑なネットワークを構築できることが分かりました。

CTA
  • URLをコピーしました!
  • URLをコピーしました!
この記事を書いた人
目次