用于复杂文本分类的微调CNN超参数

问题描述 投票:1回答:1

我正在使用CNN模型进行复杂的文本分类(主要是电子邮件和消息)。数据集包含分布在10个不同类上的大约100k条目。我实际的Keras顺序模型具有以下结构:

model = Sequential(
        [
            Embedding(
                input_dim=10000,
                output_dim=150,
                input_length=400),
            Convolution1D(
                filters=128,
                kernel_size=4,
                padding='same',
                activation='relu'),
                BatchNormalization(),
            MaxPooling1D(),
            Flatten(),
            Dropout(0.4),
            Dense(
                100,
                activation='relu'),
            Dropout(0.4),
            Dense(
                len(y_train[0]),
                activation='softmax')])

在编译模型时,我使用Nadam优化器],categoical_crossentropy损失,并且[[LabelSmoothing设置为0.2。 在模型拟合中,我正在使用

30 Epochs

,并且Batch Size设置为512。我还使用EarlyStopping来监视val_loss和耐心设置为8个纪元。测试大小设置为数据集的25%。实际上,训练在16/18个纪元后停止,其值在6/7个纪元后开始波动,然后继续直到EarlyStopping停止为止。这些值的平均值如下:

损耗:1.1673-精度:0.9674-损耗:1.2464-精度:0.8964

测试精度达到:

损失:1.2461-准确性:0.8951

现在,我想提高CNN的准确性,我尝试了不同的超参数,但是到目前为止,我无法获得更高的价值。因此,我试图找出:

    如果还有改进的空间(我敢打赌)
  1. 如果解决方案是我的超参数的微调,如果是,那么我应该更改哪些?
  2. 如果通过向模型中添加层来更深入,可能会有用,如果可以,那么如何改善我的模型
  3. 除了CNN之外,还有其他深度学习/神经网络方法可以带来更好的结果吗?
  4. 非常感谢任何能提供帮助的人! :)

我正在研究用于复杂文本分类(主要是电子邮件和消息)的CNN模型。数据集包含分布在10个不同类上的大约100k条目。我实际的Keras顺序模型...

python keras deep-learning text-classification cnn
1个回答
0
投票
有很多库,但是我发现这一库非常灵活。 https://github.com/keras-team/keras-tuner
© www.soinside.com 2019 - 2024. All rights reserved.