首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >关于"tensorflow.initialize_all_variables()“

关于"tensorflow.initialize_all_variables()“
EN

Stack Overflow用户
提问于 2016-06-22 23:49:05
回答 1查看 6.7K关注 0票数 10

我想知道以下两段代码之间有什么区别:

代码语言:javascript
代码运行次数:0
运行
复制
import tensorflow as tf
x = tf.Variable(0, name='x')
model = tf.initialize_all_variables()
with tf.Session() as session:
    for i in range(5):

        session.run(model)
        x = x + 1

        print(session.run(x))
代码语言:javascript
代码运行次数:0
运行
复制
import tensorflow as tf
x = tf.Variable(0, name='x')
model = tf.initialize_all_variables()
with tf.Session() as session:
    for i in range(5):

        x = x + 1
        session.run(model)

        print(session.run(x))

唯一的区别是"x =x+ 1“和”session.run(模型)“的顺序。我认为这将对输出产生很大的影响,因为session.run(模型)将初始化所有变量。但是,这两个代码块输出的内容是相同的.

代码是从教程中复制的:http://learningtensorflow.com/lesson2/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-23 00:42:36

是啊,这里有点棘手。Tensorflow的一个重要概念是延迟求值,这意味着首先建立节点的Tensorflow图,而图的求值只在session.run中进行。

对于这一行代码x=x+1,这里的x是类型的张量,这里的+是重载的tf.add,所以x=x+1实际上正在构建图,还没有进行计算;在每次迭代时,图(在本例中是二叉树)被添加了一个多层(多一个嵌套和)。Session.run(模型)总是将x初始化为0,session.run(x)将根据到目前为止在迭代中构造的图计算x。例如,在迭代4中,x被加1 4次,因为这个迭代中的图有4个嵌套和(或层)。

如果这对您有意义的话,我认为“两个代码本质上是相同的”也是有意义的。

注意:严格地说,在第一次迭代中,右边的x是类型变量,但这些是细节,不是我想要指出的要点.

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37980020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档