欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

pytorch加载的模型测试的结果和保存时测试的结果不一致

发布时间:2024/7/23 编程问答 44 豆豆
生活随笔 收集整理的这篇文章主要介绍了 pytorch加载的模型测试的结果和保存时测试的结果不一致 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

假设有一个dropout网络net,训练过程中用测试集进行了测试,接着将该网络进行了保存

torch.save(net.state_dict(), path)

然后将保存的网络加载出来:

net=class_net() # 先定义net的结构 net.load_state_dict(torch.load(path))

接着用同样的测试集进行测试,发现测试结果和保存时的结果不一致,这是因为dropout网络会对神经元进行随机失活,因此测试结果也会不一致。解决方法是在测试函数eval()中设置随机种子:

torch.manual_seed(42) if self.cuda:torch.cuda.manual_seed(42)

注意一点,不能在dropout网络的训练函数/前向传播函数forward()中设置随机种子,否则每次前向传播失活的神经元都是一样的,失去了dropout的随机性。而在测试函数eval()中设置随机种子并不影响网络的训练,因为eval()函数不包含网络的训练过程。

总结

以上是生活随笔为你收集整理的pytorch加载的模型测试的结果和保存时测试的结果不一致的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。