python - TF 2.0 打印张量值
问题描述
我正在学习最新版本的 Tensorflow (2.0),并尝试运行一个简单的代码来分割矩阵。使用装饰器@tf.function 我做了以下类:
class Data:
def __init__(self):
pass
def back_to_zero(self, input):
time = tf.slice(input, [0,0], [-1,1])
new_time = time - time[0][0]
return new_time
@tf.function
def load_data(self, inputs):
new_x = self.back_to_zero(inputs)
print(new_x)
因此,当使用 numpy 矩阵运行代码时,我无法检索数字。
time = np.linspace(0,10,20)
magntiudes = np.random.normal(0,1,size=20)
x = np.vstack([time, magntiudes]).T
d = Data()
d.load_data(x)
输出:
Tensor("sub:0", shape=(20, 1), dtype=float64)
我需要以 numpy 格式获取此张量,但 TF 2.0 没有使用 run() 或 eval() 方法的类 tf.Session。
感谢您为我提供的任何帮助!
解决方案
在 decorator 指示的图表中@tf.function
,您可以使用tf.print打印张量的值。
tf.print(new_x)
以下是如何重写代码
class Data:
def __init__(self):
pass
def back_to_zero(self, input):
time = tf.slice(input, [0,0], [-1,1])
new_time = time - time[0][0]
return new_time
@tf.function
def load_data(self, inputs):
new_x = self.back_to_zero(inputs)
tf.print(new_x) # print inside the graph context
return new_x
time = np.linspace(0,10,20)
magntiudes = np.random.normal(0,1,size=20)
x = np.vstack([time, magntiudes]).T
d = Data()
data = d.load_data(x)
print(data) # print outside the graph context
tf.decorator
上下文之外的张量类型是 type tensorflow.python.framework.ops.EagerTensor
。要将其转换为 numpy 数组,您可以使用data.numpy()
推荐阅读
- wagtail - Wagtail如何在侧边栏中分隔自定义页面类型
- mysql - 我们可以使用数据库的 url 将我们的 python 脚本与数据库连接起来吗
- go - 如何在golang中初始化一个接口数组?
- java - 如何在 JUnit 测试中模拟 Camel 处理器
- r - 如何使用 R 中的 readLines 读取某个范围内的所有行?
- html - 元或链接文本中的 HTML 错误
- javascript - npm 权限被拒绝 - node-sass
- floating-point - 在报表 Odoo v10 中显示整数
- homebrew - 自制 OpenMPI 安装问题
- javascript - jQuery 按首字母过滤帖子 - 按字母顺序