向优化添加 nn.Parameter 张量
add a nn.Parameter tensor to the optim
假设我有一个带有参数张量的网络:
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
序列。你有一个 Parameter
,叫做 self.initial_value
。
那么 [self.initial_value]
怎么样?
假设我有一个带有参数张量的网络:
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
序列。你有一个 Parameter
,叫做 self.initial_value
。
那么 [self.initial_value]
怎么样?