使用@tf.function 将输入转换为 UTF-8

Converting an input to UTF-8 with @tf.function

我正在使用 TensorFlow 2.4.1。我尝试使用 tf.strings.unicode_decode 对带有 @tf.function 的 base64 编码字符串进行解码,但出现了错误,即 ValueError: Rank of input must be statically known。我检查了 tf.strings.unicode_decode 在没有 @tf.function 的情况下工作正常。有没有办法用@tf.function解码base64编码的字符串?非常感谢您的回答。

我加载了一个 SavedModel 并想更改 serving_default。但是我在将输入转换为 UTF-8 时遇到了困难。这是我试过的代码。

class CustomTransformer(tf.keras.Model):
    def __init__(self):
        super(CustomTransformer, self).__init__()
        self.model = tf.saved_model.load('./models/transformer/1')
  
    @tf.function(input_signature=[tf.TensorSpec(shape=None, dtype=tf.string)])
    def call(self, input):

        # Error occurred. ValueError: Rank of `input` must be statically known.
        _input_str = tf.strings.unicode_decode(input_data, 'UTF-8')

        return _input_str

这是错误信息。

ValueError: Rank of `input` must be statically known.

尝试从已加载的 SavedModel 更改 serving_default 时,是否有将输入转换为 UTF-8 的方法?

使用tf.strings.unicode_decode时,您需要指定一个形状。 (参见 documentation)。在那种情况下,因为您使用的是没有任何维度的张量(一个简单的字符串),所以只需提供一个空元组作为形状:

@tf.function(input_signature=[tf.TensorSpec(shape=(), dtype=tf.string)])