Để deploy mô hình NLP, tốt nhất là gộp layer vector hóa (TextVectorization) vào trong mô hình, tạo thành một SavedModel nhận raw string input.
Mã export mô hình
print("Đang export mô hình")
export_model = tf.keras.Sequential([
binary_vectorize_layer,
binary_model,
layers.Activation('sigmoid')
])
print("Compile mô hình export")
export_model.compile(
loss=losses.SparseCategoricalCrossentropy(from_logits=False),
optimizer='adam',
metrics=['accuracy']
)
print("Test với raw_test_ds (raw strings)")
loss, accuracy = export_model.evaluate(raw_test_ds)
print("Độ chính xác mô hình: {:2.2%}".format(binary_accuracy))
Kết quả
Đang export mô hình Compile mô hình export Test với raw_test_ds (raw strings) 250/250 [==============================] - 4s 13ms/step - loss: 0.5296 - accuracy: 0.8078 Độ chính xác mô hình: 81.10%
Giải thích
- Tạo
Sequentialmới ghép: vectorize_layer + trained_model + activation. - Điều này cho phép mô hình nhận thẳng chuỗi raw string, tự động vector hóa bên trong.
- Compile lại với
from_logits=Falsevì đã có sigmoid activation. - Đánh giá trên
raw_test_ds(chưa vector hóa) cho accuracy ~81%. - Mô hình này sẵn sàng lưu bằng
model.save()để serving.