首页 > 解决方案 > 如何为张量流/服务模型预处理数据?

问题描述

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

当我输入数据时,我通过 Docker 从部署的 tensorflow/serving 中收到此错误:

{ "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")
        ])

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

标签: pythondockertensorflowtensorflow-serving

解决方案


更新:

找了好久的答案,不知道为什么我花了这么长时间才遇到酸洗,用相同的分词器对输入请求进行分词的答案就是泡菜,所以

# 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)

如果需要,也可以使用填充来完成。


推荐阅读