用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])

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐