Einzelheiten:
GPU : GTX 1080
Training : ~ 1,1 Millionen Bilder aus 10 Klassen
Validierung : ~ 150 Tausend Bilder aus 10 Klassen
Zeit pro Epoche : ~ 10 Stunden
Ich habe CUDA, cuDNN und Tensorflow eingerichtet (auch Tensorflow-GPU).
Ich denke nicht, dass mein Modell so kompliziert ist, dass es 10 Stunden pro Epoche dauert. Ich habe sogar überprüft, ob meine GPU das Problem war, aber es war nicht so.
Liegt die Trainingszeit an den vollständig verbundenen Schichten?
Mein Modell:
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']
)
Da es viele Daten gibt, habe ich den ImageDataGenerator verwendet.
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"
)