使用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的差異。你能向我解釋爲什麼這種差異存在嗎?