当 tensorflow 在 Eager 模式与图形模式下运行时,矩阵乘法值会有所不同
tensorflow 中急切和非急切执行的代码流是不同的。但是这些值必须理想地匹配,但事实并非如此。
急切执行:
import tensorflow as tf
from tensorflow.python.ops import gen_math_ops
import numpy as np
tf.enable_eager_execution()
dZ = np.array([[ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, -0.9, 0.1, 0.1, 0.1]])
FC_W = np.array([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])
import pdb
pdb.set_trace()
a = gen_math_ops.mat_mul(dZ, FC_W, False, True)
print(a)
急切执行的输出:[[-2.77555756e-17 -2.77555756e-17 -2.77555756e-17]
图表执行:
import tensorflow as tf
from tensorflow.python.ops import gen_math_ops
import numpy as np
dZ = np.array([[ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, -0.9, 0.1, 0.1, 0.1]])
FC_W = np.array([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])
a = gen_math_ops.mat_mul(dZ, FC_W, False, True)
sess = tf.InteractiveSession()
print(str(sess.run(a)))
图执行的输出:[[-5.55111512e-17 -5.55111512e-17 -5.55111512e-17]]
对于简单的矩阵乘法,这两种模式之间的输出差异不是很大吗?(虽然是e-17)