PyTorch のモデル
ここでは OOP アプローチでモデルのアーキテクチャを定義します。これは、モデルクラスを用意し、その中に次の 2 つのメソッドを実装することを意味します。
.__init__():使用する層を定義します。forward():モデルが入力を受け取った後に何が起こるかを定義します。ここで、事前に定義した層へ入力を流します。
線形層を 3 つ、各層の後に ReLU 活性化を入れたモデルを作りましょう。最後の線形層の後だけはシグモイド活性化にします。これは、今回の水の飲用可否予測のような二値分類タスクに適しています。以下は、皆さんが見慣れているかもしれない nn.Sequential() を使ったモデル定義です。
net = nn.Sequential(
nn.Linear(9, 16),
nn.ReLU(),
nn.Linear(16, 8),
nn.ReLU(),
nn.Linear(8, 1),
nn.Sigmoid(),
)
このモデルをクラスとして書き直してみましょう!
この演習はコースの一部です
PyTorchによる中級ディープラーニング
演習の手順
.__init__()メソッドで、提示されたモデル定義に対応する次元で 3 つの線形層を定義し、それぞれをself.fc1、self.fc2、self.fc3に割り当ててください。forward()メソッドで、モデル入力xをすべての層に順に通し、各層の出力に活性化関数を適用してください。最初の層での実装と同様のやり方で進めます。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
import torch.nn as nn
import torch.nn.functional as F
class Net(nn.Module):
def __init__(self):
super().__init__()
# Define the three linear layers
self.fc1 = ____
self.fc2 = ____
self.fc3 = ____
def forward(self, x):
# Pass x through linear layers adding activations
x = nn.functional.relu(self.fc1(x))
x = ____
x = ____
return x