呼び出し可能オブジェクトの振る舞いについて疑問があります。
以下のコードでimport文は省略しました。
Python
1INPUT_FEATURES = 640 * 640 2HIDDEN = 100 3OUTPUT_FEATUERS = 4 4 5class Net(nn.Module): 6 def __init_(self): 7 super().__init__() 8 self.layer1 = nn.Linear(INPUT_FEATURES, HIDDEN) 9 self.layer2 = nn.Linear(HIDDEN, HIDDEN) 10 self.layer3 = nn.Linear(HIDDEN, OUTPUT_FEATUERS) 11 12 def forward(self, x): 13 x = self.layer1(x) 14 x = self.layer2(x) 15 x = self.layer3(x) 16 return x
Pyhton
1net = Net()
このコードで、例えば、self.layer1()はnn.Linearのインスタンスで、nn.Linearクラスは__call__メソッドを
持っている。だから、x = self.layer1(x)でnn.Linear内のメソッドである、forward(self, x)が
実行されることはわかります。
しかし、net(data)で、上記Netで定義したforwardが実行される理由がわかりません。
これは、Netクラスがnn.Moduleを継承しているからでしょうか。
もし、そうであるなら、nn.Moduleを継承したクラスを実装したい場合、順伝播のメソッドはforwardという名前にしないと
いけないのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。