尝试打印基本数字添加时的张量流错误

时间:2016-07-01 21:54:18

标签: python-3.x ubuntu tensorflow

import tensorflow as tf

x = tf.constant(35, name='x')
y = tf.Variable(x + 5, name='y')

model = tf.initialize_all_variables()

with tf.Session() as session:
    session.run(model)
    print(session.run(y))

此代码生成错误,指出类型错误:预期单张量时的张量列表

可能是什么问题???

系统详细信息:Virtualbox:Ubuntu 16.04 xenial,张量流0.9.0,python-3.5

1 个答案:

答案 0 :(得分:0)

看起来你错过了张量流的概念方面。 首先让我从代码示例开始     导入tensorflow为tf

x = tf.constant(35, name='x')
y = tf.Variable(5, name='y')
add = tf.add(x,y)
update = tf.assign(y,add)

model = tf.initialize_all_variables()

with tf.Session() as session:
    session.run(model)
    print(session.run(y))
    print(session.run([add,y]))
    print(session.run([update,y]))
    print(session.run([update,y]))

这将打印以下内容

5
40 5
40 40
75 75

那是怎么回事?首先,x和y不是35和5.它们是包含数据的张量流对象,可以与张量流图交互。 x是一个常量,当tensorflow请求时,它将为图形提供值35,但它不等于35.y是一个可以赋值的变量,并在运行时由tensorflow更新。

在您的示例中,您将y的值设置为初始值为x + 5的变量,但x不是35. x是张量流对象。

在上面的例子中,我们将值5赋给变量y。当我们运行会话并获得y的值时,它是5.当我们得到add的值时它是35 + 5但y没有改变。当我们执行更新时,我们发现y的值已经更新为40.最后,当我们再次更新时,我们看到y再次增加了35,现在是75.

我希望这能解释经典python变量和常量以及张量流变量和常量之间的区别。