TensorFlow 2.6.0版本中如何读取张量(Tensor)的元素?
问题原因
你调用tf.disable_v2_behavior()后关闭了TensorFlow 2.x默认的*即刻执行(Eager Execution)*模式,回退到了1.x版本的静态图执行逻辑。此时定义的张量都是仅定义了计算逻辑的符号张量,没有实际运行生成数值,所以直接调用numpy()方法、用NumPy转换都会失败。同时TF 2.x的公开Keras后端接口已经移除了get_session方法,从私有路径导入的方法也存在版本兼容问题,因此第三种写法也报错。
解决方法
方案1(推荐):使用原生TensorFlow 2.x写法
去掉tf.disable_v2_behavior()的兼容代码,默认开启即刻执行模式,直接调用numpy()方法即可读取张量元素:
import tensorflow as tf import numpy as np a = tf.constant([[1,2,3],[4,5,6]]) # 直接读取张量值 print(a.numpy())
方案2:保留1.x兼容逻辑的写法
如果必须保留tf.disable_v2_behavior()的兼容设置,按照TensorFlow 1.x的静态图规则,创建会话运行张量后即可取值:
import tensorflow.compat.v1 as tf tf.disable_v2_behavior() import numpy as np a = tf.constant([[1,2,3],[4,5,6]]) # 创建会话执行张量获取数值 with tf.Session() as sess: a_value = sess.run(a) print(a_value)
内容的提问来源于stack exchange,提问作者aymane_it
相关产品推荐
相关产品推荐

