使用np.zeros初始化tensorflow变量和使用tf.zeros之间是否存在一些差异?
例如,如果我们看一下MNIST softmax教程( https://github.com/tensorflow/tensorflow/blob/r1.1/tensorflow/examples/tutorials/mnist/mnist_softmax.py),变量W和b按以下方式初始化。
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
如果我们使用np.zeros,代码仍然可以正常工作,而不是使用tf.zeros进行初始化。
W = tf.Variable(np.zeros([784, 10], dtype=np.float32))
b = tf.Variable(np.zeros([10], dtype=np.float32))
所以,我认为可能没有区别。但是,我尝试了以下代码段,假设以下a
和b
变量相同。
a = tf.Variable(tf.zeros((3, 2)), tf.float32)
b = tf.Variable(np.zeros((3, 2)), tf.float32)
sess = tf.InteractiveSession()
init = tf.global_variables_initializer()
sess.run(init)
a.eval()
a.eval()
的结果如下:
array([[ 0., 0.],
[ 0., 0.],
[ 0., 0.]], dtype=float32)
但b.eval()
的结果如下:
array([[ 0., 0.],
[ 0., 0.],
[ 0., 0.]])
因此,即使值相同,dtype也有差异。你能否向我解释为什么存在这种差异?