奇怪的验证损失和准确度

我正在尝试使用多层感知器(MLP)进行分类。以下是模型的结构。

import kerasfrom keras.models import Sequentialfrom keras.layers import Dense, Dropoutfrom keras.utils import np_utilsmodel = Sequential()model.add(Dense(256, activation='relu', input_dim=400))model.add(Dropout(0.5))model.add(Dense(256, activation='relu'))model.add(Dropout(0.5))model.add(Dense(number_of_classes, activation='softmax'))model.compile(loss='categorical_crossentropy',              optimizer='adam',              metrics=['accuracy'])X_train = input_datay_train = np_utils.to_categorical(encoded_labels, number_of_classes)history = model.fit(X_train, y_train, validation_split=0.2, nb_epoch=10, verbose=1)

但是当我训练模型时,我发现训练准确度在提高,但验证准确度几乎没有变化,并且值很高。

Using TensorFlow backend.Train on 41827 samples, validate on 10457 samplesEpoch 1/1041827/41827 [==============================] - 7s - loss: 2.5783 - acc: 0.3853 - val_loss: 14.2315 - val_acc: 0.0031Epoch 2/1041827/41827 [==============================] - 6s - loss: 1.0356 - acc: 0.7011 - val_loss: 14.8957 - val_acc: 0.0153Epoch 3/1041827/41827 [==============================] - 6s - loss: 0.7935 - acc: 0.7691 - val_loss: 15.2258 - val_acc: 0.0154Epoch 4/1041827/41827 [==============================] - 6s - loss: 0.6734 - acc: 0.8013 - val_loss: 15.4279 - val_acc: 0.0153Epoch 5/1041827/41827 [==============================] - 6s - loss: 0.6188 - acc: 0.8185 - val_loss: 15.4588 - val_acc: 0.0165Epoch 6/1041827/41827 [==============================] - 6s - loss: 0.5847 - acc: 0.8269 - val_loss: 15.5796 - val_acc: 0.0176Epoch 7/1041827/41827 [==============================] - 6s - loss: 0.5488 - acc: 0.8395 - val_loss: 15.6464 - val_acc: 0.0154Epoch 8/1041827/41827 [==============================] - 6s - loss: 0.5398 - acc: 0.8418 - val_loss: 15.6705 - val_acc: 0.0164Epoch 9/1041827/41827 [==============================] - 6s - loss: 0.5287 - acc: 0.8439 - val_loss: 15.7259 - val_acc: 0.0163Epoch 10/1041827/41827 [==============================] - 6s - loss: 0.4923 - acc: 0.8547 - val_loss: 15.7484 - val_acc: 0.0187

这个问题是训练数据的问题,还是我的训练过程设置有问题?


回答:

你的模型似乎出现了严重的过拟合问题。这可能与数据有关,但你可以先尝试降低学习率,以防万一。

from keras.optimizers import Adammodel.compile(loss='categorical_crossentropy',          optimizer=Adam(lr=0.0001),          metrics=['accuracy'])

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注