对于tensorflow 0.12,topn_test.py在ppc64le上为TopN类编写的测试失败。 以其中一个失败的测试为例,以下是观察到的内容 -
追踪(最近一次呼叫最后一次):
File "./python2.7/site-packages/tensorflow/contrib/tensor_forest/python/topn_test.py", line 121, in testSimple
self.assertItemsEqual([2, 3], list(ids_v))
AssertionError: Element counts were not equal:
First has 1, Second has 0: 2
First has 0, Second has 1: 1
预计为[2, 3]
,而实际为[3, 1]
。
此测试的代码如下 -
def testSimple(self):
t = topn.TopN(1000, shortlist_size=10)
t.insert([1, 2, 3, 4, 5], [1.0, 2.0, 3.0, 4.0, 5.0])
t.remove([4, 5])
ids, vals = t.get_best(2)
with session.Session() as sess:
sess.run(tf.global_variables_initializer())
ids_v, vals_v = sess.run([ids, vals])
self.assertItemsEqual([2, 3], list(ids_v))
self.assertItemsEqual([2.0, 3.0], list(vals_v))
在上面的测试中,如果我们在ids_v, vals_v = sess.run([ids, vals])
之前将id运行到sess,那么测试通过这意味着将id运行到会话两次会在第二次运行中得到预期的结果。
第一个sess.run(ids)的输出给出[3, 1]
,然后下一个运行给出[3, 2]
。这很奇怪。理想情况下,sess.run应该始终在每次运行中给出固定的结果。如果我错了,请更正。
即使在x86上也观察到相同的情况,唯一的区别是第一次运行给出[3, 2]
,第二次运行给出[3, 3]
。
有人可以告诉我sess.run(ids)如何在每次运行中提供不同的输出?这是预期的行为还是TopN类的实现存在其他一些潜在的问题?我还检查过一个恒定的张量,这种奇怪的行为并没有被它看到。
提前致谢。