在Pytorch上,损失函数或优化器的实现在操作系统上是否有所不同?

时间:2020-08-21 08:22:11

标签: anaconda pytorch anaconda3

我正在使用带有以下工具和版本的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导致了这个?

0 个答案:

没有答案