我想比较基线LSTM和微调模型的性能。我在网上找到了很多例子,但他们都使用预训练网络,比如VGG16,ResNet50,我想知道是否有人可以帮助语言模型。 我的网络如下:
model = Sequential()
model.add(Embedding(vocab_size, embedding_size, input_length=5, weights=[pretrained_weights]))
model.add(Bidirectional(LSTM(units=embedding_size, return_sequences=True)))
model.add(Bidirectional(LSTM(units=embedding_size, return_sequences=True)))
model.add(Bidirectional(LSTM(units=embedding_size, return_sequences=True)))
model.add(Bidirectional(LSTM(units=embedding_size, return_sequences=True)))
model.add(Bidirectional(LSTM(units=embedding_size, return_sequences=True)))
model.add(Bidirectional(LSTM(units=embedding_size, return_sequences=True)))
model.add(Bidirectional(LSTM(units=embedding_size, return_sequences=True)))
model.add(Bidirectional(LSTM(units=embedding_size, return_sequences=True)))
model.add(Bidirectional(LSTM(units=embedding_size, return_sequences=True)))
model.add(Bidirectional(LSTM(units=embedding_size)))
model.add(Dense(2000, activation='softmax'))
model.compile(loss='categorical_crossentropy',
optimizer = RMSprop(lr=0.001),
metrics=['accuracy'])
# fit network
model.fit(X_train, y_train, epochs=100, verbose=2, batch_size=16)
我试图通过冻结第一层来微调它,添加:
for layer in model.layers[:3]:
layer.trainable = False
在编译之前,但准确度下降,基线我有大约10%的准确度(我想测试一个与训练完全不同并评估性能的语料库),而如果我冻结层,我会得到一些东西像0.002。 有人可以帮助我理解我做错了什么或建议我采用不同的微调方法吗? 提前谢谢!