使用np.zeros和使用tf.zeros初始化tensorflow变量之间是否存在一些差异?例如,如果我们看一下MNIST softmax教程( https://github.com/tensorflow/tensorflow/blob/r1.1/tensorflow/examples/tutorials/mnist/mnist_softmax.py),变量W和b将按照以下方式进行初始化。例如,如果我们看一下MNIST softmax教程( https://github.com/tensorflow/tensorflow/blob/r1.1/tensorflow/examples/tutorials/mnist/mnist_softmax.py),则变量W和b将按照以下方式进行初始化。使用np.zeros和使用tf.zeros初始化Tensorflow变量之间的区别
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
而不是初始化使用tf.zeros,如果我们使用np.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的差异。你能向我解释为什么这种差异存在吗?