如何为 tensorflow/serving 模型预处理数据?

How to preprocess data for tensorflow/serving model?

我对 Tensorflow 比较陌生。我使用 Docker 在本地部署了这个模型,但是我输入的数据没有经过预处理,所以它给我一个错误。这可能是因为我在创建模型时对模型外的数据进行了预处理?

当我输入数据时,我从部署的 tensorflow/serving 到 Docker:

得到了这个错误
{ "error": "Failed to process element: 0 of \'instances\' list. Error: Invalid argument: JSON Value: \"Hello\" Type: String is not of expected type: float" }

这意味着它需要一组标记化的单词,所以 [[32],[1]]。诸如此类。

这是我的模型的样子:

    model = tf.keras.Sequential([
            tf.keras.layers.Embedding(
                vocab_size, embedding_dim, input_length=max_length),
            tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(32)),
            tf.keras.layers.Dense(128, activation="relu"),
            tf.keras.layers.Dense(3, activation="softmax")
        ])

如何以与处理初始训练数据相同的方式对数据进行标记化和填充,或者如何将该步骤添加到模型中?

更新:

找了很久的答案,我不知道为什么我花了这么长时间才遇到 pickling,用相同的标记器对输入请求进行标记的答案是 pickle,所以

# saving
with open('tokenizer.pickle', 'wb') as handle:
    pickle.dump(tokenizer, handle, protocol=pickle.HIGHEST_PROTOCOL)

# loading
with open('tokenizer.pickle', 'rb') as handle:
    tokenizer = pickle.load(handle)

如果需要,可以对填充进行同样的操作。