tf.print 什么时候才能真正按预期工作(即打印张量和变量的值)?

2024-04-30

首先,我使用的是TensorFlow 2.0,我只关心这个版本或更高版本(而且我已经太关心这样一个只会产生头痛的软件了)。

The TensorFlow 文档 https://www.tensorflow.org/api_docs/python/tf/print of tf.print says

打印指定的输入。

and then

一个 TensorFlow 运算符,将指定的输入打印到所需的输出流或日志记录级别。输入可以是

  • dense or
  • 稀疏张量,
  • 原始Python对象,
  • 包含张量的数据结构, and
  • 可打印的Python对象.

打印的张量将递归地显示每个维度的第一个和最后一个元素进行总结。

这一切都很好,但我还是不明白在哪里tf.print将在我的代码中实际工作(即打印变量和张量的值)。当然,不用说,我并不关心张量、变量或其他什么的符号表示。每当我尝试使用tf.print,我想查看值(实数、向量或矩阵)。

我尝试过使用tf.print在多种情况和多个地方,例如

  • 在从调用的方法中__init__自定义层的方法,在模型构建期间(因此在编译模型之前)调用,以打印张量的值(至少,这是type(my_var)返回,即返回<class 'tensorflow.python.framework.ops.Tensor'>),但没有打印任何内容。如果我尝试添加@tf.function(我仍然不明白这个函数的用法!),没有任何变化。根据上面的文档tf.print应该打印张量,我的变量是张量,TensorFlow 决定忽略我的调用,然后有人想知道为什么我决定使用 TF?为什么?

    另外,我正在使用 TF 2.0,即使我不使用装饰器@tf.function, print(tf.executing_eagerly())打印 False,这确实是我所期待的。

  • 在自定义损失函数中,会发生类似的行为(即有时会打印某些内容,有时不会,有时我尝试添加装饰器@tf.function到自定义损失函数,看看是否有变化,但没有任何变化,或者也许是)。

好的,所以,如你所见,我不知道在哪里tf.print会做我想做的事,即我想查看张量的值。如果某个东西是张量,它就必须有一个值。对于变量也是如此。

那么,什么时候tf.print实际打印张量的值?

我正在寻找这样的答案:“tf.print永远不会工作”或“只有当你在做梦时它才会工作”。除了笑话和讽刺之外,我真的在寻找答案,准确地告诉我代码的哪些位置或使用 TF 开发模型的哪些阶段tf.print实际上会做它应该做的事情。请不要告诉我这个tf.print当输入是张量时将起作用!


tf.print几乎在所有情况下都有效。

下面提到的代码表明tf.print内部按预期工作init的方法Custom Layer和里面一个Method打电话自init方法一Custom Layer.

import tensorflow as tf

class MyLayer(tf.keras.layers.Layer):
    def __init__(self, units, **kwargs): 
        self.units = units
        tf.print('units', tf.convert_to_tensor(units)) # Inside init method
        self.call(10) # Method called from init Method
        super().__init__(**kwargs)
    def call(self, inputs):        
        tf.print('inputs', tf.convert_to_tensor(inputs)) #Inside Method of Custom Layer
        return inputs


def get_model():
    inp = tf.keras.layers.Input(shape=(1,))
    out = MyLayer(8)(inp)
    model = tf.keras.Model(inputs=inp, outputs=out)
    #model.summary()
    return model


def train():
    model = get_model()
    model.compile(optimizer="adam", loss="mae")
    x_train = [2, 3, 4, 1, 2, 6]
    y_train = [1, 0, 1, 0, 1, 1]
    model.fit(x_train, y_train)


if __name__ == '__main__':
    train()

输出的tf.print上面代码中使用的语句如下所示:

units 8

inputs 10

inputs [[2]
 [6]
 [3]
 [2]
 [1]
 [4]]

如果你看到那个tf.print在任何其他情况下都无法按预期工作,请分享可重现的代码,以便Tensorflow Community可以看一下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tf.print 什么时候才能真正按预期工作(即打印张量和变量的值)? 的相关文章

  • 递归 lambda 表达式可能吗?

    我正在尝试编写一个调用自身的 lambda 表达式 但我似乎找不到任何语法 或者即使它是可能的 本质上我想将以下函数传输到以下 lambda 表达式中 我意识到这是一个愚蠢的应用程序 它只是添加 但我正在探索可以在 python 中使用 l
  • 使用 pygame 显示 unicode 符号

    我检查了其他答案 但不明白为什么我的代码错误地显示 This is what I currently see https i stack imgur com 8tNIK png 这是关于文本渲染的相关代码 font pygame font
  • 使用 python 中的公式函数使从 Excel 中提取的值的百分比相等

    import xlrd numpy excel Users Bob Desktop wb1 xlrd open workbook excel assignment3 xlsx sh1 wb1 sheet by index 0 colA co
  • 用缺失的日期填充其他列 Nan Pandas DataFrame

    我实际上是从几个 Excel 文件中提取数据来监控我的每日卡路里摄入量 我设法使用列表理解来生成日期 我尝试使用合并或连接 但它不起作用 ValueError 您正在尝试合并对象和 float64 列 date list 2021 05 2
  • 补丁 - 为什么相对补丁目标名称不起作用?

    我已经从模块导入了一个类 但是当我尝试修补类名而不使用模块作为前缀时 出现类型错误 TypeError Need a valid target to patch You supplied MyClass 例如 以下代码给出了上述错误 imp
  • pyspark 数据框中的自定义排序

    是否有推荐的方法在 pyspark 中实现分类数据的自定义排序 我理想地寻找 pandas 分类数据类型提供的功能 因此 给定一个数据集Speed列 可能的选项是 Super Fast Fast Medium Slow 我想实现适合上下文的
  • Python3.0 - 标记化和取消标记化

    我正在使用类似于以下简化脚本的内容来解析较大文件中的 python 片段 import io import tokenize src foo bar src bytes src encode src io BytesIO src src l
  • 没有名为 StringIO 的模块

    我有Python 3 6 我想从另一个名为 run py 的 python 文件执行名为 operation py 的 python 文件 In operation py I do from cStringIO import StringI
  • Django send_mail SMTPSenderRefused 530 与 gmail

    一段时间以来 我一直在尝试使用 Django 从我正在开发的网站接收电子邮件 现在 我还没有部署它 并且我正在使用Django开发服务器 我不知道这是否会影响它 这是我的 settings py 配置 EMAIL BACKEND djang
  • 使用 python 绘制正值小提琴图

    我发现小提琴图信息丰富且有用 我使用 python 库 seaborn 然而 当应用于正值时 它们几乎总是在低端显示负值 我发现这确实具有误导性 尤其是在处理现实数据集时 在seaborn的官方文档中https seaborn pydata
  • Geodjango距离查询未检索到正确的结果

    我正在尝试根据地理位置的接近程度来检索一些帖子 正如您在代码中看到的 我正在使用 GeoDjango 并且代码在视图中执行 问题是距离过滤器似乎被完全忽略了 当我检查查询集上的距离时 我得到了预期距离 1m 和 18km 但 18km 的帖
  • 通过索引访问Python字典的元素

    考虑一个像这样的字典 mydict Apple American 16 Mexican 10 Chinese 5 Grapes Arabian 25 Indian 20 例如 我如何访问该字典的特定元素 例如 我想在对 Apple 的第一个
  • ANTLR 获取并拆分词法分析器内容

    首先 对我的英语感到抱歉 我还在学习 我为我的框架编写 Python 模块 用于解析 CSS 文件 我尝试了 regex ply python 词法分析器和解析器 但我发现自己在 ANTLR 中 第一次尝试 我需要解析 CSS 文件中的注释
  • 使用“默认”环境变量启动新的子进程

    我正在编写一个构建脚本来解析依赖的共享库 及其共享库等 这些共享库在正常情况下是不存在的PATH环境变量 为了使构建过程正常工作 让编译器找到这些库 PATH已更改为包含这些库的目录 构建过程是这样的 加载器脚本 更改 PATH gt 基于
  • 动态过滤 pandas 数据框

    我正在尝试使用三列的阈值来过滤 pandas 数据框 import pandas as pd df pd DataFrame A 6 2 10 5 3 B 2 5 3 2 6 C 5 2 1 8 2 df df loc df A gt 0
  • 混淆矩阵不支持多标签指示符

    multilabel indicator is not supported是我在尝试运行时收到的错误消息 confusion matrix y test predictions y test is a DataFrame其形状为 Horse
  • 双击打开 ipython 笔记本

    相关文章 通过双击 osx 打开 ipython 笔记本 https stackoverflow com questions 16158893 open an ipython notebook via double click on osx
  • TKinter 中的禁用/启用按钮

    我正在尝试制作一个像开关一样的按钮 所以如果我单击禁用按钮 它将禁用 按钮 有效 如果我再次按下它 它将再次启用它 我尝试了 if else 之类的东西 但没有成功 这是一个例子 from tkinter import fenster Tk
  • 将上下文管理器的动态可迭代链接到单个 with 语句

    我有一堆想要链接的上下文管理器 第一眼看上去 contextlib nested看起来是一个合适的解决方案 但是 此方法在文档中被标记为已弃用 该文档还指出最新的with声明直接允许这样做 自 2 7 版起已弃用 with 语句现在支持此
  • 如何为不同操作系统/Python 版本编译 Python C/C++ 扩展?

    我注意到一些成熟的Python库已经为大多数架构 Win32 Win amd64 MacOS 和Python版本提供了预编译版本 针对不同环境交叉编译扩展的标准方法是什么 葡萄酒 虚拟机 众包 我们使用虚拟机和Hudson http hud

随机推荐