Detale:
GPU : GTX 1080
Szkolenie : ~ 1,1 miliona zdjęć należących do 10 klas
Walidacja : ~ 150 tysięcy zdjęć należących do 10 klas
Czas na epokę : ~ 10 godzin
Skonfigurowałem CUDA, cuDNN i Tensorflow (również GPU Tensorflow).
Nie sądzę, że mój model jest tak skomplikowany, że zajmuje 10 godzin na epokę. Nawet sprawdziłem, czy mój procesor graficzny jest problemem, ale tak nie było.
Czy czas szkolenia wynika z w pełni połączonych warstw?
Mój model:
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']
)
Ponieważ jest dużo danych, użyłem 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"
)