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
答案 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变量和常量以及张量流变量和常量之间的区别。