Tensorflow 值错误:无法使用 eval 评估张量
Posted
技术标签:
【中文标题】Tensorflow 值错误:无法使用 eval 评估张量【英文标题】:Tensorflow Value Error : Cannot evaluate tensor using eval 【发布时间】:2017-07-24 15:12:39 【问题描述】:我是 tensorflow 新手,使用以下脚本遇到 TensorFlow 值错误:
W = tf.Variable(10)
print(W.eval())
我也试过这种方式:
with Session() as sess:
print(W.eval())
它会抛出未初始化值变量的错误。
现在当我声明 W = tf.Variable(10)
时,它不会用 10 来初始化它吗?
【问题讨论】:
【参考方案1】:来自文档:
当您启动图表时,变量必须明确 在您可以运行使用其值的操作之前进行初始化。你可以 通过运行它的initializer op来初始化一个变量,恢复 保存文件中的变量,或者只是运行
assign
Op 给变量赋值。其实变量initializer op 只是一个assign
Op,它分配了变量的初始值 到变量本身。# Launch the graph in a session. with tf.Session() as sess: # Run the variable initializer. sess.run(w.initializer) # ...you now can run ops that use the value of 'w'...
最常见的初始化模式是使用便捷函数
global_variables_initializer()
将 Op 添加到初始化的图中 所有的变量。然后在启动图表后运行该操作。# Add an Op to initialize global variables. init_op = tf.global_variables_initializer() # Launch the graph in a session. with tf.Session() as sess: # Run the Op that initializes global variables. sess.run(init_op) # ...you can now run any Op that uses variable values...
因此你需要使用类似的东西:
import tensorflow as tf
W = tf.Variable(10)
print('W: 0'.format(W))
sess = tf.Session()
with sess.as_default():
sess.run(W.initializer)
print(W.eval())
仅供参考In TensorFlow, what is the difference between Session.run() and Tensor.eval()?
【讨论】:
【参考方案2】:您需要显式运行初始化操作
sess.run(tf.variables_initializer(W))
在评估任何依赖于 W 的节点之前。
【讨论】:
【参考方案3】:另一个例子,
import tensorflow as tf
W = tf.Variable(tf.truncated_normal([700,10]))
sess = tf.Session()
with sess.as_default():
sess.run(W.initializer)
print(W.eval())
结果:
[[-0.3294761 0.6800459 1.33331 ... 1.42762 -1.3164878
1.4831722 ]
[-1.0402402 0.52254885 -1.344712 ... -0.30849338 0.15020785
1.6682776 ]
[-1.1791034 1.4859517 -1.7137778 ... 0.844212 1.5928217
-0.21043983]
...
[ 0.01982834 -1.1290654 0.33557415 ... 0.0510614 -0.6524679
0.16643837]
[-0.09969945 -0.10285325 -1.1134144 ... 1.2253191 0.13343143
-1.7491579 ]
[-1.9345136 0.63447094 1.1200713 ... 0.5357313 1.8579113
0.8549472 ]]
【讨论】:
欢迎来到 ***。仅包含代码的答案往往会被标记为删除,因为它们是“低质量”的。请阅读有关回答问题的帮助部分,然后考虑在您的回答中添加一些评论。以上是关于Tensorflow 值错误:无法使用 eval 评估张量的主要内容,如果未能解决你的问题,请参考以下文章
如何为 tensorflow 对象检测模型运行 eval.py 作业
在 TensorFlow 中,Session.run() 和 Tensor.eval() 有啥区别?
设置 TensorBoard 以在 Google Colab 中为 TensorFlow 对象检测模型运行 eval.py 作业