【发布时间】:2021-06-25 22:19:28
【问题描述】:
最近尝试使用自定义的conv2d卷积层参数,目前的设置是:
kernel = [np.array([[0., 0., 0.], [0., -1., 0.], [0., 1., 0.]]),
np.array([[0., 0., 0.], [0., -1., 1.], [0., 0., 0.]]),
np.array([[0., 0., 0.], [0., -1., 0.], [0., 0., 1.]])]
self.weights = []
for kernel_filter in kernel:
kernel_filter = torch.FloatTensor(kernel_filter).unsqueeze(0).unsqueeze(0) # (1, 1, 3, 3)
kernel_filter = np.repeat(kernel_filter, self.channels, axis=0)
self.weights.append(nn.Parameter(data=kernel_filter, requires_grad=True))
...
for weight in self.weights:
image_filtered = F.conv2d(x, weight, stride=[1, 1], padding=1, groups=self.channels)
经过几次训练,查看了参数值,发现并没有什么变化。请问这是为什么,或者我的理解有什么问题。
【问题讨论】:
-
您的优化器是否包含这些参数组?
-
是的,我使用'self.optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, self.model.parameters()), lr=0.001, betas=(0.9, 0.999))' 来优化可训练参数。这里有什么问题吗?
标签: deep-learning pytorch conv-neural-network