在训练网络中发现了结果一直不变的问题,就去输出看看网络参数:
dicte = model.state_dict() # .items()
print('up_concat4.conv.conv2.0.weight', dicte['up_concat4.conv.conv2.0.weight'][0])
print('center.conv2.0.bias', dicte['center.conv2.0.bias'])
print('center.conv1.0.bias', dicte['center.conv1.0.bias'])
结果发现网络参数一直不变,再看看梯度:
for p in model.parameters():
print(p.grad.data)
结果发现连最后一层的梯度都非常小,最后发现是网络的输出层函数范围用错了。