如何在IMDB数据上获得90%以上的测试准确率?

问题描述 投票:0回答:2

我尝试使用 IMDB 数据训练模型。我得到的预期训练精度约为 96%+,但我对测试精度不满意。现在我的期望是在测试数据上获得 90%+ 的测试精度。我尝试使用多个分类器,但每次测试数据的准确率都达到 84% 到 89%。在这里我将包括一些我已经尝试过的分类器。在大多数情况下,我尝试通过增加纪元或更改优化器来进行一些参数调整。现在我关心的是如何才能将测试准确率提高到 90%+ 。

到目前为止我尝试过的分类器:

第一:

model = Sequential()
model.add(Embedding(vocab_size, 32, input_length = max_words))
model.add(Bidirectional(LSTM(32, return_sequences = True)))
model.add(GlobalMaxPool1D())
model.add(Dense(20, activation="relu"))
model.add(Dropout(0.05))
model.add(Dense(1, activation="sigmoid"))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(x_train,y_train,validation_data=(x_test, y_test),epochs=10,batch_size=100)

第二:

    model = Sequential([
            Embedding(vocab_size, 32, input_length=max_words),
            Dropout(0.2),
            ZeroPadding1D(padding=1),
            Convolution1D(64, 5, activation='relu'),
            Dropout(0.2),
            MaxPooling1D(),
            Flatten(),
            Dense(100, activation='relu'),
            Dropout(0.2),
            Dense(1, activation='sigmoid')
        ])
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
    model.fit(x_train,y_train,validation_data=(x_test, y_test),epochs=10,batch_size=100)
keras deep-learning
2个回答
1
投票

通过检查 IMDB 数据集的最先进分析,我认为使用像您正在使用的简单模型无法达到 ^90%。但是,您可以尝试使用像 glove 这样的预训练嵌入,而不是训练自己的嵌入。另外,我发现这个 repo 在 keras 中有 BERT 实现,提供了 IMBD 分类的演示,它能够获得约 99% 的准确率。


0
投票

此代码不起作用,任何人都可以解决这个问题。 提供的 github 链接包含一个不起作用的 jupyter 笔记本

© www.soinside.com 2019 - 2024. All rights reserved.