如何创建具有1个以上签名的TensorFlow 2 SavedModel?

2024-10-03 02:46:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用tf.saved_model.savetf.saved_model.load来保存和加载TF2 SavedModel。根据this link,我创建了一个签名,这个签名是serving_default。然后我尝试在类Adder中添加一个新的带有签名装饰器的函数。但是在根据this加载模型之后,我发现签名在模型中消失了,即print(adder1.signatures)没有打印签名名称。我找不到有关如何在保存模型时使用多个签名的任何信息。有人能给我提供一些信息吗?多谢各位

Tensorflow2.1.0,在谷歌Colab上。代码如下所示:

import tensorflow as tf
import tensorflow_hub as hub
import numpy as np
import os
import pandas as pd

class Adder(tf.Module):

  @tf.function(input_signature=[tf.TensorSpec(shape=None, dtype=tf.float32), tf.TensorSpec(shape=None, dtype=tf.float32)])# 
  def add(self, x, y):
    return x + y ** 2 + 1

  @tf.function(input_signature=[tf.TensorSpec(shape=None, dtype=tf.float32)])
  def square(self, x):
    return x ** 2

to_export = Adder()
tf.saved_model.save(
    to_export, 
    '/tmp/adder'            
)

adder1 = tf.saved_model.load("/tmp/adder")
print(adder1.signatures)
adder1_sig = adder1.signatures["serving_default"]
adder1_sig(x = tf.constant(1.), y = tf.constant(2.))



Tags: 模型importnonemodelsavetfasshape