TensorFlow打印输出异常求助:无法获取计算结果值
解决TensorFlow只输出张量信息而非计算结果的问题
嘿,我明白你碰到的问题啦!你现在用的是TensorFlow 1.x的图模式,这种模式下代码分为两个阶段:构建计算图和执行计算图。你目前只完成了第一步——定义了所有的常量和运算节点,但并没有真正触发计算,所以打印addn的时候,输出的只是这个张量的元信息(名称、形状、数据类型),而不是计算后的数值。
解决方法(TensorFlow 1.x风格)
你需要创建一个会话(tf.Session)来执行计算图里的运算,修改后的代码如下:
import tensorflow as tf # Immutable constants a = tf.constant(6,name='constant_a') b = tf.constant(3,name='contant_b') c = tf.constant(10,name='contant_c') d = tf.constant(5,name='contant_d') mul = tf.multiply(a,b,name='mul') div = tf.div(c,d,name="div") # Output of the multiplication what needs to be added addn = tf.add_n([mul,div],name="addn") # 新增会话执行部分 with tf.Session() as sess: # 运行addn节点,触发所有依赖的计算 result = sess.run(addn) print(result)
运行这段代码后,你就能得到20这个预期的计算结果啦——因为6*3 + 10/5 = 18 + 2 = 20。
如果你用的是TensorFlow 2.x
TF2默认启用即时执行模式(Eager Execution),不需要手动创建会话,直接调用张量的.numpy()方法就能获取数值:
import tensorflow as tf # TF2默认是Eager模式,不需要额外配置 a = tf.constant(6,name='constant_a') b = tf.constant(3,name='contant_b') c = tf.constant(10,name='contant_c') d = tf.constant(5,name='contant_d') mul = tf.multiply(a,b,name='mul') div = tf.div(c,d,name="div") addn = tf.add_n([mul,div],name="addn") # 直接获取并打印数值 print(addn.numpy())
简单来说,核心问题就是你只画好了计算的“流程图”,但还没让这个流程图真正跑起来~
内容的提问来源于stack exchange,提问作者Kalpana
相关产品推荐
相关产品推荐

