我现在对深度学习还是新手,我按照这个 keras 教程使用 Transformer 制作翻译模型这里是链接。一切正常,但我不知道如何保存模型,目前我有这个实现
transformer.save("models/transformer.h5")
并用它加载模型
new_model = tf.keras.models.load_model(
"models/transformer.h5",
custom_objects={
"PositionalEmbedding": PositionalEmbedding,
"TransformerEncoder": TransformerEncoder,
"TransformerDecoder": TransformerDecoder,
},
)
new_model.summary()
我还尝试保存矢量化并使用pickle加载它this 但是当我在笔记本之外使用模型时,模型会变得更糟,当我在同一个笔记本中加载模型时,它就很好(无需重新加载矢量化)
有人可以指导我如何正确保存这个模型吗?
你能定义“更糟”吗——它会产生糟糕的输出?不起作用?我建议使用 .keras 而不是 .h5 的现代格式 - 支持在 TensorFlow 2.0 中工作,并将保存您的优化器配置和自定义层。
像这样保存模型:
transformer.save("models/transformer.keras")
并像这样加载模型:
new_model = tf.keras.models.load_model(
"models/transformer.keras",
custom_objects={
"PositionalEmbedding": PositionalEmbedding,
"TransformerEncoder": TransformerEncoder,
"TransformerDecoder": TransformerDecoder,
},
)
以及矢量化
vectorized_layer.save("models/vectorized_layer")
vectorized_layer = tf.keras.layers.TextVectorization.from_saved_model("models/vectorized_layer")