在模型内部使用嵌入层与在模型外部使用嵌入层有什么区别?我可以将嵌入层构建到模型中:
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 ...)这是否意味着如果我在模型之外使用嵌入,则在训练期间不学习嵌入参数?
发布于 2022-09-06 16:20:40
是否意味着如果我在模型之外使用嵌入,则在训练期间不会学习嵌入参数吗?
从Embedding层分配的密集向量表示通常只有在设置trainable=True时才可训练。这完全取决于您如何自己对数据进行预处理,以及您希望留给Embedding层多少。通常,如果您正在处理NLP任务,您可以在添加一个StringLookup或TextVectorization层之前添加一个Embedding层,该层允许您对文本进行预处理,并在没有任何“手动”步骤的情况下以优雅的方式进行培训。
一般
每个输入到Embedding层的整数值都映射到一个唯一的N维向量表示,其中N是由您选择的。默认情况下,这些向量表示是从均匀分布中提取的。Embedding层继承了包含可训练参数的tf.keras.layers.Layer。
我认为,如果您使用预先训练过的上下文敏感向量,并且不希望在培训期间更新它们的值,那么在模型之外生成嵌入数据可能是有意义的。但再说一次,一切都取决于你。
https://stackoverflow.com/questions/73624865
复制相似问题