嵌入模型内部与模型外部



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

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

我还可以使用模型外的嵌入来生成嵌入数据,然后将其输入到模型中:

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

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

这是否意味着如果我在模型之外使用嵌入训练期间没有学习参数?

Embedding层分配的密集向量表示通常只有在设置trainable=True时才可训练。这完全取决于你想如何自己预处理数据,以及你想把多少留给Embedding层。通常,如果你正在处理NLP任务,你可以在添加Embedding层之前添加StringLookupTextVectorization层,这允许你预处理文本并以优雅的方式训练它们,而不需要任何";手动";步骤。

一般

提供给Embedding层的每个整数值都映射到一个唯一的N维向量表示,其中N由您选择。默认情况下,这些矢量表示是从均匀分布中绘制的。Embedding层继承自包含可训练参数的tf.keras.layers.Layer

我认为,如果你使用预先训练的上下文敏感向量,并且不想在训练期间更新它们的值,那么在模型之外生成嵌入数据是有意义的。但是,这一切都取决于你。

最新更新