如何解决在Pytorch上,损失函数或优化器的实现在操作系统上是否有所不同?
我正在使用带有以下工具和版本的Pytorch:
- conda 4.8.3
- Python 3.6.10
- torch == 1.5.1
- torchvision == 0.6.1
然后,使用两个不同的OS训练了相同的脚本和数据集。 我的机器学习任务是使用CNN,RNN对一些日语句子进行分类。
- OS1:macOS Mojave版本10.14.6
- OS2:Debian GNU / Linux 10(失败者)
我希望不同操作系统上的两个脚本具有相同的丢失收敛性。但是结果却不同,显然Debian上的脚本不会像在macOS上那样收敛。
- macOS:损失从4.0更改为0.001。
- Debian:损失从4.0变为2.9。
- 在debian上,脚本将不会返回更高的价值。所以我停止了训练。
我的训练脚本可能很普通。如下所示:
while True:
# retrive dataset with batch size
fw_args,bw_args = next(train_batcher())
# call ml models,and get results
net_out = net(*fw_args)
# get loss with loss function
# I'm using `cross_entropy`
loss = ... some loss function ...
loss.backward()
# optimizer = torch.optim.Adam
optimizer.step()
# reset grad
net.zero_grad()
...
我猜有一些实现上的差异,例如,将下一步随机化的模块(这是优化程序?)。 有什么建议吗?
编辑:
我将python平台anaconda更改为pyenv,然后在Debian上损失从4.0更改为0.02。 Anaconda导致了这个?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。