John Tracid
John Tracid

Reputation: 4046

Strange validation loss and accuracy

I'm trying to use MLP for classification. Here is how model looks like.

import keras

from keras.models import Sequential
from keras.layers import Dense, Dropout

from keras.utils import np_utils

model = 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_data
y_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)

But when I train my model, I see that training accuracy goes better but validation accuracy not moving and has high value.

Using TensorFlow backend.

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

Is problem related to train data or something wrong with my train process setup?

Upvotes: 0

Views: 739

Answers (1)

Ioannis Nasios
Ioannis Nasios

Reputation: 8537

Your models seems that is strongly overfitting. It is probably something to do with the data but you could try lowering your learning rate first, just in case.

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

Upvotes: 1

Related Questions