如何解决可以反向传播但不会带来任何改进的安慰剂神经网络
创建一个用于测试的无用神经网络的简单方法是什么,它可以反向传播(这样就不需要注释掉 loss.backward()
)并且是可训练的,但它不会带来任何改进预测准确性?
例如下面是 MNIST 数据集的神经网络。我应该如何创建一个也能提供相同维度 (batch_size * 10) 的输出的副本,这将使 loss
张量能够反向传播梯度,但不会提高准确性?
class test_net_1(nn.Module):
def __init__(self):
super(test_net_1,self).__init__()
self.conv1 = nn.Conv2d(1,1,kernel_size=3)
self.fc1 = nn.Linear(26*26,10)
def forward(self,x):
x = self.conv1(x)
x = x.view(-1,26*26)
x = self.fc1(x)
x = F.log_softmax(x)
return x
解决方法
据我所知,您希望在调用 loss.backward()
时无需更新模型的权重即可调用 step()
。这可以通过使用以下命令冻结模型的所有模块来实现:
class test_net_1(nn.Module):
def __init__(self):
super(test_net_1,self).__init__()
self.conv1 = nn.Conv2d(1,1,kernel_size=3)
self.fc1 = nn.Linear(26*26,10)
self.conv1.requires_grad = False # Note this line.
self.fc1.requires_grad = False # Note this line.
def forward(self,x):
x = self.conv1(x)
x = x.view(-1,26*26)
x = self.fc1(x)
x = F.log_softmax(x)
return x
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。