我的模型有问题。我正在尝试使用最基本的 Conv1D 模型来分析评论数据并输出 1-5 类的评级,因此损失是 categorical_crossentropy。模型结构如下
# define model
model = Sequential()
model.add(Embedding(vocab_size, 100, input_length=max_length))
model.add(Conv1D(filters=32, kernel_size=8, activation='relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())
model.add(Dense(10, activation='relu'))
model.add(Dense(5, activation='softmax'))
# compile network
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# fit network
model.fit(final_X_train, final_Y_train, epochs=5, batch_size=50, validation_data=(final_X_val, final_Y_val), callbacks=callback)
总参数:14,977,717
可训练参数:14,977,717
不可训练参数:0
训练 212135 个样本,验证 69472 个样本
Epoch 1/5
loss: 0.9452 - acc: 0.5781 - val_loss: 0.8440 - val_acc: 0.6309
Epoch 2/5
loss: 0.7707 - acc: 0.6711 - val_loss: 0.8234 - val_acc: 0.6433
Epoch 3/5
loss: 0.5807 - acc: 0.7657 - val_loss: 0.9144 - val_acc: 0.6345
Epoch 4/5
loss: 0.3736 - acc: 0.8575 - val_loss: 1.1982 - val_acc: 0.6194
Epoch 5/5
loss: 0.2285 - acc: 0.9173 - val_loss: 1.5770 - val_acc: 0.6073
训练 acc 增加,损失按预期减少。但是验证损失和验证 acc 在第二个 epoch 之后直接减少。训练后的整体测试给出了大约 60 秒的准确度。
总精度为:0.6046845041714888
我已经清理、改组、下采样(所有类都有 42427 个数据样本)并将数据正确拆分为训练(70%)/验证(10%)/测试(20%)。
如果您发现有任何改进可以解决此问题,请告诉我。:)