如何使用TensorFlow每次训练CNN(MNIST数据集)时获得相同的损失值?

时间:2017-06-27 15:46:15

标签: python tensorflow mnist

我想训练卷积神经网络(使用MNIST数据集和TensorFlow)几次新的,并且每次获得相同的准确度结果。为了得到这个我:

  1. 保存未经训练的仅初始化(global_variables_initializer)net
  2. 每次开始训练此未经训练的网络
  3. 时加载
  4. 设置mnist.train.next_batch shuffle = False,所以图像序列每次都相同
  5. 我之前使用前馈网(3个隐藏层)完成了这项工作,每次运行此python脚本时,我都会得到完全相同的损失和准确值。

    但是,"相同"将模型从前馈网络更改为卷积神经网络的脚本,每次我运行脚本时都会有不同的损失/准确性。

    因此,我将批量大小减小为1并查找每个图像的丢失值,并看到前两个图像总是具有相同的损失值,但其余的是每次运行脚本时都有一点不同。

    知道为什么吗?

1 个答案:

答案 0 :(得分:0)

感谢@AlexandrePassos评论,我在TensorFlow中搜索确定性/非确定性操作。

所以目前使用CUDA原子并在GPU上运行的所有操作都是非确定性的 请看这个链接:https://github.com/tensorflow/tensorflow/issues/3103

如果有人知道在GPU上使用TensorFlow实现CNN并确定操作的方法,请:How to create a CNN with deterministic operations in TensorFlow on a GPU?