我想对卷积神经网络(使用 MNIST 数据集和 TensorFlow)进行几次新的训练,并且每次都获得相同的准确度结果。为了得到这个我:
- 保存未经训练的仅初始化的(global_variables_initializer)网络
- 每次我开始训练这个未经训练的网络时都加载
- 设置mnist.train.next_batch shuffle=False,这样图像序列每次都是相同的
我之前已经使用前馈网络(3 个隐藏层)完成了此操作,每次运行此 python 脚本时,我都会得到完全相同的损失和准确性值。
But,将模型从前馈网络更改为卷积神经网络的“相同”脚本使得每次运行脚本时损失/准确性略有不同。
因此,我将批量大小减少到 1,并查找每个图像的损失值,发现前两个图像始终具有相同的损失值,但其余的每次运行脚本时都会略有不同。
知道为什么吗?
感谢 @AlexandrePassos 评论,我在 TensorFlow 中搜索确定性/非确定性操作。
因此,目前所有使用 CUDA 原子并在 GPU 上运行的操作都是不确定的。
请参阅此链接:https://github.com/tensorflow/tensorflow/issues/3103 https://github.com/tensorflow/tensorflow/issues/3103
如果有人知道在 GPU 上使用 TensorFlow 和确定性操作实现 CNN 的方法,请:如何在 GPU 上的 TensorFlow 中创建具有确定性操作的 CNN? https://stackoverflow.com/questions/44800055/how-to-create-a-cnn-with-deterministic-operations-in-tensorflow-on-a-gpu
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)