【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クラスと自作のクラスの違いについてみていきました。
自作のクラスを作成することで、より複雑なネットワークを構築できることが分かりました。

 
									 
		 
		