異なるnnModule間のかなり複雑な相互作用をデバッグしようとしています。デバッグの目的で、そのうちの1つをアイデンティティネットワークに置き換えることができれば非常に役に立ちます。たとえば:IDだけのnnModuleを作成する
net_a = NetworkA()
net_b = NetworkB()
net_c = NetworkC()
input = Autograd.Variable(torch.rand(10,2))
out = net_a(input)
out = net_b(out)
out = net_c(out)
私の代わりにすべての私としてCsに通過し、再接続するので、ちょうどnet_b = IdentityNet()
に2つ目の行を変更できるようにしたいと思います。しかし、完全に空のnnModuleを作成すると、オプティマイザはValueError: optimizer got an empty parameter list
をスローします。
この問題を回避する方法はありますか?
最小非作業例:あなたがここに遭遇
import torch.optim as optim
class IdentityModule(nnModule):
def forward(self, inputs):
return inputs
identity = IdentityModule()
opt = optim.Adam(identity, lr=0.001)
out = identity(any_tensor)
error = torch.mean(out)
error.backward()
opt.step()
空のnnModuleとはどういう意味ですか?あなたの 'IdentifyNet()'はどのように見えますか?それは単に入力を返しますか?投稿をより明確にする必要があります。 – jdhao
はい、私はIdentityNetに入力を返すだけです。私は、 'forward'メソッドが入力を返すようにすることができると考えましたが、オプティマイザは、最適化するパラメータがないというエラーを送出します。私はIdentityNetクラスの作成に関するアドバイスを探しています。 –
あなたはエラーを再現するための人々のための最小の実例を与えるべきです。 – jdhao