在keras顺序模型中,可以使用set_weights
方法直接设置权重。
model.layers[n].set_weights([your_wight])
但是,如果我尝试使用功能性API为图层设置权重,则会遇到问题。
这是代码段:
emb = Embedding(max_words, embedding_dim, input_length=maxlen)(merge_ip)
#skipping some lines
.
.
emb.set_weights([some_weight_matrix])
这引发了错误
AttributeError: 'Tensor' object has no attribute 'set_weights'
我认为是因为emb
是一个Tensor对象。
我想知道如何在模型中正确设置体重
答案 0 :(得分:4)
如果要在“嵌入”层上设置权重,可以将其添加到构造器中,如下所示:
from keras.layers import Embedding
embedding_layer = Embedding(len(word_index) + 1,
EMBEDDING_DIM,
weights=[embedding_matrix],
input_length=MAX_SEQUENCE_LENGTH,
trainable=False)
https://blog.keras.io/using-pre-trained-word-embeddings-in-a-keras-model.html
之后,您可以交出merge_ip
:
x = embedding_layer(merge_ip)
答案 1 :(得分:1)
embed_layer = Embedding(max_words, embedding_dim, input_length=maxlen)
emp = embed_layer(merge_ip)
embed_layer.set_weights("...")