Я пытаюсь обучить модели cnn-lstm, размеры моего образца составляют 640x640.
У меня GTX 1080 ti 11 ГБ.
Я использую Keras с тензором backend.
Вот модель.
img_input_1 = Input(shape=(1, n_width, n_height, n_channels))
conv_1 = TimeDistributed(Conv2D(96, (11,11), activation='relu', padding='same'))(img_input_1)
pool_1 = TimeDistributed(MaxPooling2D((3,3)))(conv_1)
conv_2 = TimeDistributed(Conv2D(128, (11,11), activation='relu', padding='same'))(pool_1)
flat_1 = TimeDistributed(Flatten())(conv_2)
dense_1 = TimeDistributed(Dense(4096, activation='relu'))(flat_1)
drop_1 = TimeDistributed(Dropout(0.5))(dense_1)
lstm_1 = LSTM(17, activation='linear')(drop_1)
dense_2 = Dense(4096, activation='relu')(lstm_1)
dense_output_2 = Dense(1, activation='sigmoid')(dense_2)
model = Model(inputs=img_input_1, outputs=dense_output_2)
op = optimizers.Adam(lr=0.00001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.001)
model.compile(loss='mean_absolute_error', optimizer=op, metrics=['accuracy'])
model.fit(X, Y, epochs=3, batch_size=1)
В настоящее время, используя эту модель, я могу использовать тренировочные данные только тогда, когда размеры изображений уменьшены до 60x60, больше и у меня заканчивается память GPU.
Я хочу использовать максимально возможный размер, так как хочу сохранить как можно больше дискриминационной информации.(Метки y будут координатами экрана мыши между 0 - 640)
Среди многих других я нашел такой ответ: https://ai.stackexchange.com/questions/3938/how-to-handle-images-of-large-sizes-in-cnn
Хотя я не уверен, как я могу "ограничить вашу CNN"или" передавать ваши данные в каждую эпоху "или, если это поможет.
Как я могу уменьшить объем используемой памяти, чтобы я мог увеличить размеры изображений?
Можно ли пожертвоватьвремя обучения / скорость вычислений в пользу данных с более высоким разрешением при сохранении эффективности модели?
Примечание. Приведенная выше модель не является окончательной, а представляет собой лишь основные затраты.