假设我有一个带有参数张量的网络:
self.inital_value = nn.Parameter(torch.randn(1,96,4,4))
和两层:
self.rgb_layers = nn.ModuleList([nn.Conv2d(96, 3, 1, 1, 0)]*2)
所以前向函数如下:
v = torch.clone(self.inital_value)
for i in range(2):
v = self.rgb_layers[i](v)
return v
现在我定义一个优化器。如果我只想训练第一层,我可以这样做:
opt = optim.RMSprop(model.rgb_layers[0].parameters(),lr = lr)
但是如果我想只训练张量self.inital_value
,我做同样的事情,我会得到这个错误:
'Parameter' object has no attribute 'parameters'
如何绕过此限制?
好吧,它取一个Parameter
s序列。还有一个Parameter
,叫做self.initial_value
。
那么[self.initial_value]
呢?