【发布时间】:2017-11-16 00:04:09
【问题描述】:
我有一个函数(下面的foo),当它直接运行时与在tf.test.TestCase 内运行时表现不同。
该代码应该使用 elems [1..5] 创建一个数据集并对其进行洗牌。然后重复 3 次:从数据中创建一个迭代器并使用它来打印 5 个元素。
当它自己运行时,它会给出所有列表都被打乱的输出,例如:
[4, 0, 3, 2, 1]
[0, 2, 1, 3, 4]
[2, 3, 4, 0, 1]
但在测试用例中运行时,它们总是相同的,即使在运行之间也是如此:
[0, 4, 2, 3, 1]
[0, 4, 2, 3, 1]
[0, 4, 2, 3, 1]
我想这与测试用例如何处理随机种子有关,但我在 TensorFlow 文档中看不到任何相关内容。感谢您的帮助!
代码:
import tensorflow as tf
def foo():
sess = tf.Session()
dataset = tf.data.Dataset.range(5)
dataset = dataset.shuffle(5, reshuffle_each_iteration=False)
for _ in range(3):
data_iter = dataset.make_one_shot_iterator()
next_item = data_iter.get_next()
with sess.as_default():
data_new = [next_item.eval() for _ in range(5)]
print(data_new)
class DatasetTest(tf.test.TestCase):
def testDataset(self):
foo()
if __name__ == '__main__':
foo()
tf.test.main()
我使用 Python 3.6 和 TensorFlow 1.4 运行它。不需要其他模块。
【问题讨论】:
标签: python unit-testing testing tensorflow