为什么无法使用tf.py_function的模型进行序列化?

问题描述 投票:1回答:1

根据ty.py_function的documentation,使用它的模型无法序列化。

函数的主体(即func)不会在GraphDef中序列化。因此,如果需要序列化模型并将其还原到其他环境中,则不应使用此功能。

为什么不能序列化?

我正在寻找一种解释,说明为什么是这种情况,以及使用tf.py_function的替代方法,但没有找到有用的方法。

在我的特定情况下,我想使用Keras令牌生成器,并且其方法期望使用numpy数组-因此我使用tf.py_function对其进行调用。

python tensorflow
1个回答
0
投票

通常,TensorFlow图包含要在张量上执行的操作的描述。例如,当您执行tf.add(a, b)时,会将新节点添加到图中,指示应在张量ab上计算加法运算。

当您使用tf.py_function时,TensorFlow必须执行您作为函数提供的任意Python代码。不幸的是,tf.py_function无法将任意函数“转换”为图节点,因此无法将这些操作并入图。人们可以考虑只将Python代码本身嵌入到图形中的选择,但是由于TensorFlow可使用多种语言,因此让节点使用专门针对一种特定语言的代码是没有意义的。

在TensorFlow 2.x中,默认情况下启用急切执行功能,tf.function可以将特定函数转换为图形,以便更快地执行(tf.function),但是此功能没有与see guide直接集成这样。

© www.soinside.com 2019 - 2024. All rights reserved.