Detalles:
GPU : GTX 1080
Entrenamiento : ~ 1.1 millones de imágenes pertenecientes a 10 clases
Validación : ~ 150 mil imágenes pertenecientes a 10 clases
Tiempo por época : ~ 10 horas
He configurado CUDA, cuDNN y Tensorflow (GPU Tensorflow también).
No creo que mi modelo sea tan complicado que lleva 10 horas por época. Incluso verifiqué si mi GPU era el problema, pero no fue así.
¿El tiempo de entrenamiento se debe a las capas totalmente conectadas?
Mi modelo:
model = Sequential()
model.add()
model.add(Conv2D(64, (3, 3), padding="same", strides=2))
model.add(Activation('relu'))
model.add(Dropout(0.25))
model.add(Conv2D(64, (3, 3), padding="same", strides=2))
model.add(Activation('relu'))
model.add(Dropout(0.25))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(3, 3), strides=2))
model.add(Flatten())
model.add(Dense(256))
model.add(Activation('relu'))
model.add(Dense(4096))
model.add(Activation('relu'))
model.add(Dense(10))
model.add(Activation('softmax'))
model.summary()
opt = keras.optimizers.rmsprop(lr=0.0001, decay=1e-6)
model.compile(loss='categorical_crossentropy',
optimizer=opt,
metrics=['accuracy']
)
Debido a que hay muchos datos, utilicé ImageDataGenerator.
gen = ImageDataGenerator(
horizontal_flip=True
)
train_gen = gen.flow_from_directory(
'train/',
target_size=(512, 512),
batch_size=5,
class_mode="categorical"
)
valid_gen = gen.flow_from_directory(
'validation/',
target_size=(512, 512),
batch_size=5,
class_mode="categorical"
)