python - tensorflow: tf.set_random_seed() 相同的代码,但得到不同的结果
问题描述
简而言之,在 tensorflow 中,除了 tf.set_random_seed() 之外,我应该设置任何其他配置来重现相同的结果吗?我的代码中没有 numpy 操作。
长版:我正在用 horovod 训练模型,我想重现结果以进行调试。我在构建图表之前设置了 tf.set_random_seed(1) 。所有操作都在 tensorflow 中,没有 numpy.
而且我只是重新运行了几次训练脚本,代码没有被修改。
据我了解,它们应该产生相同的结果,因为图形是按相同的顺序构建的,并且 random_seed 设置相同。session.run 命令不会造成不同,更何况我没有更改代码。
但是,对于多次运行的相同代码,我仍然得到不同的结果。
具体来说,我可以看到输入图像以相同的顺序读取,并且步骤 'tf.image.random_flip_left_right' 产生具有相同种子的随机翻转。
但是我通过以下代码测试了 tf.image.random_flip_left_right,得到了相同的结果。所以这个函数没有bug。它确实接受了全局 tf random_seed 并产生了相同的结果。
import tensorflow as tf
tf.set_random_seed(0)
img_raw =tf.read_file('test.jpg')
image = tf.image.decode_jpeg(img_raw,channels=3,dct_method='INTEGER_ACCURATE')
image = tf.image.random_flip_left_right(image)
sess=tf.Session()
print(sess.run(image))
相同的种子和图怎么能随机翻转呢?任何建议将不胜感激。
解决方案
你能播下种子tf.image.random_flip_left_right(image, seed = 0)
并进行测试吗?
编辑
好吧,你说你没有在代码中使用 numpy,但 TF 将它用于一些内部任务。所以,你能不能再试一次,这次也修复 numpy 种子。
import numpy as np
from numpy.random import seed
seed(0)
如果这也不起作用,那么问题可能出在此处Horovod
讨论的问题上。
推荐阅读
- python - 压缩两个长度为 n 和 2n 的数组以形成字典
- python - 从多个excel文件创建多个数据框
- java - 我正在尝试将 UTF-8 解码为字符串,但某些特殊字符没有被解码(“和”)被插入显示为?问号
- vba - Subform not requerying after combobox change
- razor - 最佳方法多域 .NET Core 应用程序
- sql - 用 case 表达式排序
- c# - 在 Web Api Get 函数中允许特殊字符
- electron - 控制台日志不再显示信息日志
- android - Android BottomSheetDialogFragment has color behind rounded corners
- javascript - 推送一个对象时数组中的其他值发生变化