如何使用 TensorFlow 每次训练 CNN(MNIST 数据集)时获得相同的损失值?
How to get the same loss value, every time training a CNN (MNIST data set), with TensorFlow?
我想训练一个卷积神经网络(使用 MNIST 数据集和 TensorFlow)几次,每次都获得相同的准确度结果。为了得到这个我:
- 保存一个未经训练的只初始化的(global_variables_initializer)网络
- 每次我开始训练这个未经训练的网络时加载
- 设置mnist.train.next_batchshuffle=False,所以图片序列每次都是一样的
我以前用前馈网络(3 个隐藏层)做过这个,每次我 运行 这个 python 脚本我得到完全相同的损失和准确度值。
但是, "same" 脚本将模型从前馈网络更改为卷积神经网络,每次我 运行 脚本有点不同 loss/accuracy.
所以我将批量大小减少到一个并查找每张图像的损失值,发现前两张图像总是具有相同的损失值,但其余的是每次我 运行 脚本 a有点不同。
知道为什么吗?
感谢@AlexandrePassos 的评论,我在 TensorFlow 中搜索确定性/非确定性操作。
所以目前所有在 GPU 上使用 CUDA 原子和 运行 的操作都是不确定的。
看到这个 link:https://github.com/tensorflow/tensorflow/issues/3103
如果有人知道在 GPU 上使用 TensorFlow 和确定性操作实现 CNN 的方法,请:How to create a CNN with deterministic operations in TensorFlow on a GPU?
我想训练一个卷积神经网络(使用 MNIST 数据集和 TensorFlow)几次,每次都获得相同的准确度结果。为了得到这个我:
- 保存一个未经训练的只初始化的(global_variables_initializer)网络
- 每次我开始训练这个未经训练的网络时加载
- 设置mnist.train.next_batchshuffle=False,所以图片序列每次都是一样的
我以前用前馈网络(3 个隐藏层)做过这个,每次我 运行 这个 python 脚本我得到完全相同的损失和准确度值。
但是, "same" 脚本将模型从前馈网络更改为卷积神经网络,每次我 运行 脚本有点不同 loss/accuracy.
所以我将批量大小减少到一个并查找每张图像的损失值,发现前两张图像总是具有相同的损失值,但其余的是每次我 运行 脚本 a有点不同。
知道为什么吗?
感谢@AlexandrePassos 的评论,我在 TensorFlow 中搜索确定性/非确定性操作。
所以目前所有在 GPU 上使用 CUDA 原子和 运行 的操作都是不确定的。
看到这个 link:https://github.com/tensorflow/tensorflow/issues/3103
如果有人知道在 GPU 上使用 TensorFlow 和确定性操作实现 CNN 的方法,请:How to create a CNN with deterministic operations in TensorFlow on a GPU?