TensorFlow2.0 Keras embedding 无法用预训练向量赋初始值

本文讲述了如何在Keras中将预训练的GloVe词向量应用于Embedding层,以及遇到的ValueError问题及其解决方法。
摘要由CSDN通过智能技术生成

用glove训练了一版词向量,想将其作为初始值赋到 Keras Embedding 中,但尝试了各种方法,一直报错:

self.embedding = tf.keras.layers.Embedding(vocab_size, embedding_dim)

ValueError: You called set_weights(weights) on layer "embedding_1" with a weight list of length 1, but the layer was expecting 0 weights. Provided weights: [array([[-0.01543641, 0.00745765, 0.0926055 ,……

解决方法:

先对模型里的embedding进行 build(input_shape=(None,)),再利用set_weights 函数进行赋值

注意赋值时,embedding_value 要放在list中

encoder.embedding.build(input_shape=(None,))
encoder.embedding.set_weights([input_emb])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值