在Ubuntu(16.04-16.10)或Redhat(7.3)上的Tensorflow上运行相同的代码和相同的数据会产生非常不同的结果

时间:2017-01-27 17:37:46

标签: python python-2.7 tensorflow redhat ubuntu-16.04

我在同一个python版本上运行一个卷积神经网络脚本,使用anaconda发行版(Python 2.7.12 :: Anaconda 4.2.0(64位))在完全相同的数据集上,在两台不同的机器上运行:

LSB Version:    :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-     noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: RedHatEnterpriseWorkstation
Description:    Red Hat Enterprise Linux Workstation release 7.3 (Maipo)
Release:    7.3

Distributor ID: Ubuntu
Description:    Ubuntu 16.10
Release:    16.10

在我使用pip install tensorflow(v0.12)安装了tensorflow的两台机器中,在此之前我运行了conda update --all以确保我拥有相同版本的所有软件包。

这里有趣的部分开始了。仅在RedHat mahcine上,ADAM优化器收敛(我预测神经元的3d位置,在大约500个时期内它低于10um,验证集上验证的最终准确度约为5um)。激动相同的代码和完全相同的数据(克隆来自git) Ubuntu机器给出了更糟糕的结果:经过500次迭代后,误差仍然在48微米左右(起始'随机'精度为69微米),验证集的最终精度约为56um。

现在,我检查了数据是否完全相同,它们使用相同的随机种子进行混洗,并且训练和验证集是相同的。它似乎只是ADAM优化器(或其他)也不会聚合在Ubuntu系统上,而它很容易收敛于Redhat系统。

这是第一次迭代:

RedHat的

step  0 , training accuracy  81.1025 
step  50 , training accuracy  30.0194 
step  100 , training accuracy  25.263  
step  150 , training accuracy  19.4822 
step  200 , training accuracy  12.0292  
step  250 , training accuracy  8.85796 
step  300 , training accuracy  7.88442  
step  350 , training accuracy  7.20183 
step  400 , training accuracy  7.10236 
step  450 , training accuracy  6.14335  
step  500 , training accuracy  6.20344  

Ubuntu的

step  0 , training accuracy  69.9108  
step  50 , training accuracy  57.8822 
step  100 , training accuracy  56.905 
step  150 , training accuracy  54.9463
step  200 , training accuracy  53.7637
step  250 , training accuracy  53.3795
step  300 , training accuracy  50.9828
step  350 , training accuracy  50.4627
step  400 , training accuracy  48.7606
step  450 , training accuracy  47.8309
step  500 , training accuracy  47.8226

在Redhat机器上,CNN也使用其他优化器收敛。我在安装了相同的Redhat版本的另一台机器上以及在Ubuntu 16.04上尝试了相同的代码和相同的数据,我得到了相同的奇怪结果:在Redhat上正常工作,而不是在Ubuntu上聚合。

我不知道我得到的结果是如此不同,因为我检查了所有已安装的软件包版本是否相同。

0 个答案:

没有答案