当在张量流中实现tf.variable()时

时间:2016-09-05 15:02:26

标签: tensorflow

两天前我开始学习tensorflow,当我在tensorflow的官方网站上看到共享变量时,我被tf.Variable()搞糊涂了。我按如下方式创建一个变量后:

demo = tf.Variable(tf.random_normal([5, 5, 32, 32]), name="test")

我想知道demo是一次包含一些随机数还是仅在启动一个会话并运行图之后。如果它是前者,那么为什么我们不能通过tf.print()显示它,并且可以在会话运行后显示它。

1 个答案:

答案 0 :(得分:1)

因为它是Tensorflow的工作方式。

首先定义一个计算图,在其中描述变量,占位符和操作之间的交互。 请注意,变量的初始化是一个操作,因此放在图形描述中。

要计算任何内容,您定义的图表必须启动到会话中。 然后将会话放入设备(您可以指定)中,并且所选设备将执行所有操作。

因此

demo = tf.Variable(tf.random_normal([5, 5, 32, 32]), name="test")

是2个操作的定义:

  1. tf.random_normal([5, 5, 32, 32])在图中创建一个操作节点,该节点包括生成Tensor,其中定义的形状由从正态分布中提取的随机值填充。
  2. tf.Variable(value, name="test")首先创建一个变量节点(名称= test),然后创建一个操作节点,该节点包含value到变量的赋值。