当前位置: 首页 > 面试题库 >

自定义Python代码是否可以替代tf.py_function()?

应涵容
2023-03-14
问题内容

我已经开始使用TensorFlow 2.0,并且在一个方面有一点不确定性。

假设我有这个用例:在使用I摄取数据时,tf.data.Dataset我想对某些图像应用一些特定的增强操作。但是,我现在用的是外部库 要求 ,该
图像是numpy的阵列而不是张量

使用时tf.data.Dataset.from_tensor_slices(),流数据必须为Tensor类型。具体示例:

def my_function(tensor_image):
   print(tensor_image.numpy()
   return


data = tf.data.Dataset.from_tensor_slices(tensor_images).map(my_function)

上面的代码无法正常工作

“张量”对象没有属性“ numpy”错误。

我已经阅读过TensorFlow 2.0的文档,指出如果要使用任意python逻辑,则应该根据以下条件使用tf.py_function 或仅
使用 TensorFlow原语 : 如何在tensorflow中将“张量”转换为“numpy”数组?

我的问题如下 :在具有自定义装饰器的函数中,有没有其他方法可以使用任意python代码tf.py_function呢?

老实说,似乎要比传递给tf.py_function,转换为numpy数组,执行操作A,B,C,D然后重新转换为张量并产生结果,这是一种更为优雅的方法。


问题答案:

没有其他方法可以执行此操作,因为tf.data.Datasets仍然(以性能为由,我认为它们总是在图形模式下)执行的,因此,您不能使用tf.*方法之外的任何方法,这些方法可以通过以下方式轻松转换TensorFlow以其图形表示。

使用tf.py_function是混合Python执行(因此您可以使用任何Python库)和图形执行tf.data.Dataset对象的唯一方法(与使用TensorFlow
2.0时发生的情况相反,默认情况下急于允许自然执行此混合执行) 。



 类似资料:
  • 是否可以在Visual Studio代码中自定义代码折叠的工作方式? 我使用一种通用模式来定义各种不同文档类型之间的代码区域。 > 所以,对于XML,我用和包装文本部分 对于typescript/JavaScript,我使用和。 在完整的Visual Studio(不是VS代码)中,我有一个自定义扩展,它可以窥探文档类型之间的模式,并基于该模式创建折叠,从而允许我创建整洁的自定义文档大纲。我希望在

  • 问题内容: 我有一些需要经常打印的结构。现在,我正在围绕该结构使用经典的打印包装器: 此功能很方便,但实际上也很有限。如果不进行新包装,则无法添加或添加一些文本。我知道我可以使用 va_arg 系列添加或添加一些文本,但是我觉得我会重新实现。 我想知道是否有可能向printf编写自定义函数。我希望能够写这样的东西: 这可能吗 ?我怎样才能做到这一点 ? 注意:我在Ubuntu Linux 10.0

  • 问题内容: 题 Java 8 MIME编码器和解码器是否可以 _ 替代_ 不支持的内部Java API 和? 编辑(澄清):通过直接 _ 替换,_ 我的意思是我可以使用或透明地将任何其他现有客户端代码的Java 8 MIME Base64编码器/解码器切换为旧代码。 我到目前为止的想法以及原因 根据我的调查和快速测试(请参见下面的代码), _ 它应该是直接替代品,_ 因为 基于其JavaDoc的是

  • 问题内容: 我正在制作一个程序,要求至少每秒捕获24个屏幕截图。目前,使用下面的代码,我每94毫秒仅获得1个,因此大约为10毫秒。 我不想使用任何第三方库,因为我试图将其保持尽可能小,但是如果我希望获得显着的性能提升,我会愿意的。我也试图保持该平台独立,但是,如果确实能够显着提高性能,我愿意将其限于Windows。 编辑:我现在也尝试了两种不同的方法;使用在oracles网站上找到的代码段,并在下

  • 问题内容: 对于我的调试需求,还算不错。但是,如果可以的 话 ,它会更酷(并且很有帮助)。这可能吗? 问题答案: 有一个项目将iPython嵌入到标准pdb中,因此您可以执行以下操作: 可通过通常的方式安装。 非常短,因此除了easy_installing之外,您还可以在Python路径上的某个位置创建一个文件,并将以下内容粘贴到该文件中:

  • MIP 的事件机制和数据驱动机制基本已经满足了大部分的交互需求,但在一些复杂的需求下面,单单依靠简单的 MIP 表达式无法进行更为复杂的计算,因此引入 mip-script 组件来扩充 MIP 表达式的计算能力。 提示: 本篇仅简要介绍了 mip-script 与 mip-data,有关 mip-script 的详细用法、属性说明等内容,请查看 mip-script 的组件说明。 mip-scri

  • 问题内容: 我想抢先获取要在中加载的网页的HTML代码,使用正则表达式解析它,并仅显示所需的HTML代码,同时让该网页仍然认为它已加载了所有内容。 有什么方法可以通过或类似方法来做到这一点? 编辑:我尝试过此: 该接口永远不会被调用 问题答案: 不得不使用HttpClient。无需Cookie,只需解析html:

  • 问题内容: 如标题所述,我想基于仅在运行时可用的信息来动态加载(或不)动态加载Go软件包。 目的是允许用户通过添加新的本机脚本命令的自定义程序包扩展程序。当前,每次我添加新命令或禁止使用某些命令时,都需要编辑程序并重新编译,而如果我可以制作某种dll之类的文件,则可以创建一个“导入”脚本命令来搜索和加载命名命令库。 出于好奇,该程序是基于定制命令的脚本库,我将其用于各种用途。 我提前进行了一些搜索