我正在测试TF,当我测试添加时,我得到:
E AssertionError:
E Arrays are not equal
E
E (mismatch 100.0%)
E x: array(4.099999904632568, dtype=float32)
E y: array(4.1)
如果我将测试从3.1改为3.0,它有效吗?任何建议
代码
import tensorflow as tf
import unittest
def sum_op(param1, param2):
return tf.add(param1, param2)
with tf.Graph().as_default():
result = sum_op(tf.constant(1.0), tf.Variable(2.0))
with tf.Session() as sess:
tf.global_variables_initializer().run()
print sess.run(result)
class AddTest(tf.test.TestCase):
def testAdd(self):
with self.test_session() as sess:
self.assertAllEqual(sum_op(1.0, 3.1).eval(), 4.1)
suite = unittest.TestLoader().loadTestsFromTestCase(AddTest)
unittest.TextTestRunner(verbosity=2).run(suite)
答案 0 :(得分:1)
通常,使用浮点运算测试精确相等很容易出错。您可能需要阅读What Every Programmer Should Know About Floating-Point Arithmetic。
在检查浮点代码时应使用容差,例如numpy的isclose
function。