两天前我开始学习tensorflow,当我在tensorflow的官方网站上看到共享变量时,我被tf.Variable()搞糊涂了。我按如下方式创建一个变量后:
demo = tf.Variable(tf.random_normal([5, 5, 32, 32]), name="test")
我想知道demo是一次包含一些随机数还是仅在启动一个会话并运行图之后。如果它是前者,那么为什么我们不能通过tf.print()显示它,并且可以在会话运行后显示它。
答案 0 :(得分:1)
因为它是Tensorflow的工作方式。
首先定义一个计算图,在其中描述变量,占位符和操作之间的交互。 请注意,变量的初始化是一个操作,因此放在图形描述中。
要计算任何内容,您定义的图表必须启动到会话中。 然后将会话放入设备(您可以指定)中,并且所选设备将执行所有操作。
因此
demo = tf.Variable(tf.random_normal([5, 5, 32, 32]), name="test")
是2个操作的定义:
tf.random_normal([5, 5, 32, 32])
在图中创建一个操作节点,该节点包括生成Tensor,其中定义的形状由从正态分布中提取的随机值填充。tf.Variable(value, name="test")
首先创建一个变量节点(名称= test),然后创建一个操作节点,该节点包含value
到变量的赋值。