我正在尝试理解张量流以及如何理解它首先创建操作和变量将它们添加到图形中然后在会话中将执行这些操作。
那么为什么在这段代码中我不必使用方法initialize_all_variables()?
我试图添加init = tf.initialize_all_variables()
然后sess.run(init)
,但这是错误的。为什么没有初始化就能正常工作?
import tensorflow as tf
import numpy as np
x = tf.placeholder('float', [2,3])
y = x*2
z = tf.Variable([[1,1,1],[1,1,1]], name = "z")
with tf.Session() as sess:
x_data = np.arange(1,7).reshape((2,3))
z.assign(x_data)
res = sess.run(y, feed_dict = {x:x_data})
print(res.dtype, z.dtype, z.get_shape())`
答案 0 :(得分:1)
您不能阅读未初始化的值。在上面的情况下,您没有阅读z
,因此您不需要对其进行初始化。
如果您查看variables.py
,就会看到initialize_all_variables is a group node connected to all initializers
def initialize_variables(var_list, name="init"):
...
return control_flow_ops.group(
*[v.initializer for v in var_list], name=name)
查看z.initializer
,您可以看到它是Assign
节点。因此,评估TensorFlow中的tf.initialize_all_variables
与session.run
上的z.assign(...
进行评估