gpt4 book ai didi

python - 如何在keras中加载预训练的词嵌入并输出不同的类

转载 作者:太空宇宙 更新时间:2023-11-03 21:35:38 24 4
gpt4 key购买 nike

我想比较两个 LSTM,一个是根据维基百科数据训练的,另一个是我自己训练的。我在设计第一个模型时遇到问题。我定义了两种词嵌入词汇,一种仅基于维基百科数据构建,另一种也在我的语料库上进行训练。我想定义第一个具有嵌入层的 LSTM(从维基百科加载预先训练的权重),但输出应该与其词汇量大小(10000)不同,事实上我想输出尽可能多的类包含在其他词汇表中的内容(50000)。这就是我现在拥有的:

model = Sequential()
model.add(Embedding(vocab_size_wikipedia, embedding_size, input_length=55, weights=[pretrained_weights_wikipedia]))
model.add(Bidirectional(LSTM(units=embedding_size)))
model.add(Dense(vocab_size, activation='softmax'))
model.compile(loss='categorical_crossentropy',
optimizer = RMSprop(lr=0.0005),
metrics=['accuracy'])

model.fit(np.array(X_train), np.array(y_train), epochs=10, validation_data=(np.array(X_val), np.array(y_val)))

这是我的变量和形状:

shape of pretrained_weights_wikipedia = (10000, 100)
vocab_size = 50000
embedding_size = 100
vocab_size_wikipedia = 10000

X_train.shape() = (1600,55)
y_train.shape() = (1600,50000)
X_train.shape() = (400,55)
X_train.shape() = (400,50000)
X_train.shape() = (200,55)
X_train.shape() = (200,50000) #the labels are padded

感谢您的帮助!

最佳答案

您想要构建一个模型,其中需要具有不同词汇量(此处为 10000)的预训练权重,并针对您自己的具有不同词汇量(此处为 50000)的语料库对其进行微调。

因为问题是对称的,所以应该重用对第一个句子进行编码的机制(权重和全部)来对第二个句子进行编码。这里我们使用共享层对输入进行编码。

点击here有关共享层的更多信息。

input = Input(shape=55)

emb1 = Embedding(vocab_size_wikipedia, embedding_size, weights=pretrained_weights_wikipedia, trainable=False)(input)
emb2 = Embedding(50000, embedding_size)(input)

bi = Bidirectional(LSTM(embedding_size))

x1 = bi(emb1)
x2 = bi(emb2)

dense = Dense(vocab_size, activation='softmax')

op1 = dense(x1)
op2 = dense(x2)

model = Model(inputs=[input1, input2], outputs=[op1, op2])
model.compile(loss='categorical_crossentropy',
optimizer = RMSprop(lr=0.0005),
metrics=['accuracy'])
model.summary()

关于python - 如何在keras中加载预训练的词嵌入并输出不同的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53266771/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com