如何为 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)
如果需要,可以对填充进行同样的操作。
我对 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)
如果需要,可以对填充进行同样的操作。