keras 嵌入模型内部与模型外部

bjg7j2ky  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(153)

在模型内部和模型外部使用嵌入层有什么区别?我可以将嵌入层构建到模型中:

model = tf.keras.Sequential()
model.add(tf.keras.layers.Embedding(input_dim=1000, output_dim=64, input_length=10))
...
model.fit(features, target ...)

我还可以在模型外部使用embdedding来生成嵌入式数据,然后将其输入模型:

embedding_encoder = tf.keras.layers.Embedding(input_dim=1000, output_dim=64)
embedded_features = embedding_encoder(features)
...

model.fit(embedded_features, target ...)

这是否意味着,如果我在模型外使用嵌入,在训练过程中就不会学习到嵌入参数?

fcipmucu

fcipmucu1#

这是否意味着,如果我在模型外使用嵌入,在训练过程中就不会学习到嵌入参数?
Embedding图层分配的密集矢量表示通常只有在设置trainable=True时才可训练。这完全取决于您希望如何自己预处理数据以及希望留给Embedding图层多少数据。通常,如果您正在处理NLP任务,您可以在添加Embedding层之前添加StringLookupTextVectorization层,这样您就可以对文本进行预处理,并以一种优雅的方式训练它们,而无需任何“手动”步骤。

一般情况

输入到Embedding图层的每个整数值都Map到唯一的N维矢量表示,其中N由您选择。默认情况下,这些矢量表示是从均匀分布中绘制的。Embedding图层继承自包含可训练参数的tf.keras.layers.Layer
我认为在模型外生成嵌入数据是有意义的,例如,如果你使用预先训练的上下文相关向量,并且你不想在训练过程中更新它们的值,但这一切都取决于你。

相关问题