在Keras微调lstm

时间:2018-04-18 10:40:03

标签: python performance neural-network keras lstm

我想比较基线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。 有人可以帮助我理解我做错了什么或建议我采用不同的微调方法吗? 提前谢谢!

0 个答案:

没有答案