Training Keras model with HDF5Matrix results in very slow learning

Viewed 1346

I am using HDF5Matrix to load a dataset and train my model with it. In the first epoch I obtain about 10% of accuracy. At the moment, my dataset is not very large, so I can copy the contents of the HDF5Matrix to a numpy array and train with it. I reinitialise the model, and this time, in the first epoch I obtain a 40% accuracy.

For more information about the HDF5Matrix, see this example.

I understand in the fit method, the parameters shuffle must be either False or 'batch'. I get the same behaviour either way.

Does anybody have the same problem? Could you tell me if there is something I am doing wrong?

This is a snippet of the code:

using HDF5Matrix

from keras.utils.io_utils import HDF5Matrix

x_train = HDF5Matrix('../data/default_data.h5', 'data')
y_train = HDF5Matrix('../data/default_data.h5', 'labels') # create the model ...
# train the model
model.fit(x_train, y_train, epochs=200, batch_size=2048, shuffle='batch')  # which outputs:
Epoch 1/200
1758510/1758510 [==============================] - 42s - loss: 2.5574 - categorical_accuracy: 0.1032
Epoch 2/200
1758510/1758510 [==============================] - 41s - loss: 2.3145 - categorical_accuracy: 0.1553
Epoch 3/200
1758510/1758510 [==============================] - 41s - loss: 2.1931 - categorical_accuracy: 0.2067
Epoch 4/200
694272/1758510 [==========>...................] - ETA: 24s - loss: 2.1055 - categorical_accuracy: 0.2328

Using numpy array

# create the model again
...
# copy the HDF5Matrix to a numpy array 
X_training = x_train[0:1758510]
Y_training = y_train[0:1758510]
 # check X_training is equal to x_train
...
 # train the model again
model.fit(X_training,
          Y_training,
          epochs=200,
          batch_size=256,
          shuffle=True)
 # which outputs
Epoch 1/200
1758510/1758510 [==============================] - 27s - loss: 1.5019 - categorical_accuracy: 0.4710
Epoch 2/200
89600/1758510 [>.............................] - ETA: 26s - loss: 1.2786 - categorical_accuracy: 0.5523

Thank you very much

0 Answers
Related