如何解决预训练嵌入层:tf.constant 形状不受支持
我将在 Keras 模型中使用预训练的词嵌入。我的矩阵权重存储在 ;matrix.w2v.wv.vectors.npy;它的形状为 (150854,100)。
现在当我在 Keras 模型中添加嵌入层时,使用不同的参数如下:
model.add(Embedding(5000,100,embeddings_initializer=keras.initializers.Constant(emb_matrix),input_length=875,trainable=False))
我收到以下错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-61-8731e904e60a> in <module>()
1 model = Sequential()
2
----> 3 model.add(Embedding(5000,trainable=False))
4 model.add(Conv1D(128,10,padding='same',activation='relu'))
5 model.add(MaxPooling1D(10))
22 frames
/usr/local/lib/python3.7/dist-
packages/tensorflow/python/framework/constant_op.py in
_constant_eager_impl(ctx,value,dtype,shape,verify_shape)
323 raise TypeError("Eager execution of tf.constant with unsupported shape
"
324 "(value has %d elements,shape is %s with %d
elements)." %
--> 325 (num_t,shape.num_elements()))
326
327
TypeError: Eager execution of tf.constant with unsupported shape (value has
15085400 elements,shape is (5000,100) with 500000 elements).
请告诉我哪里做错了。
解决方法
您的嵌入层需要 5,000 个单词的词汇表,并初始化形状为 5000×100 的嵌入矩阵。然而。您尝试加载的 word2vec 模型的词汇量为 150,854 个单词。
您要么需要增加嵌入层的容量,要么截断嵌入矩阵以仅允许出现最频繁的词。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。