keras 如何保存在模型外创建的嵌入层?

bvn4nwqk  于 2023-02-16  发布在  其他
关注(0)|答案(1)|浏览(163)

我在模型外创建了一个单词嵌入层,并在拟合模型之前将其作为输入。现在我需要使用此模型预测新句子,如何保存预训练的嵌入层并将其应用于新句子?
代码示例:

Before input to model and fitting:
embedding_sentence = tf.keras.layers.Embedding(vocab_size, model_dimension, trainable=True)
embedded_sentence = embedding_sentence(vectorized_sentence)

Model fitting:
model = tf.keras.Sequential()
model.add(tf.keras.layers.GlobalAveragePooling1D())
...

现在我需要预测新的句子,我如何将训练好的嵌入应用到它们上呢?

qzwqbdag

qzwqbdag1#

以上信息不足以准确回答这个问题,但我还是会给予一下。在tensorflow中,您可以使用名为get_weights的函数来获取预训练嵌入层的权重,并将其保存在numpy/hd5文件中,该文件可以在以后用作新架构中的嵌入层。

weights = embedding_sentence.get_weights()
np.save('embedding_weights.npy', weights)
# Now load the weights to the embedding layer again
new_embedding_sentence = tf.keras.layers.Embedding(vocab_size, model_dimension, trainable=True)
new_embedding_sentence.build((None,))  # required to set the weights
new_embedding_sentence.set_weights(weights)
new_sentence = "This a dummy sentence"
new_sentence_embedding = new_embedding_sentence(new_sentence )
predictions = model(new_sentence_embedding)

相关问题