Dettagli:
GPU : GTX 1080
Formazione : ~ 1,1 milioni di immagini appartenenti a 10 classi
Convalida : ~ 150 mila immagini appartenenti a 10 classi
Tempo per epoca : ~ 10 ore
Ho installato CUDA, cuDNN e Tensorflow (anche GPU Tensorflow).
Non credo che il mio modello sia così complicato che richiede 10 ore per epoca. Ho anche controllato se la mia GPU era il problema ma non lo era.
Il tempo di allenamento è dovuto agli strati completamente collegati?
Il mio modello:
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']
)
Perché ci sono molti dati che ho usato 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"
)