我正在尝试训练 CNN-LSTM 模型。我的图像大小为 640x640。我有一个 GTX 1080 ti 11GB。我正在使用带有 TensorFlow 后端的 Keras。
这是模型。
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 内存用完了。
我想使用尽可能大的尺寸,因为我想保留尽可能多的歧视性信息。(标签将是 0 - 640 之间的鼠标屏幕坐标)。
在许多其他问题中,我发现了这个问题:如何在 CNN 中处理大尺寸的图像?
尽管我不确定如何“限制您的 CNN”或“在每个时期流式传输您的数据”,或者这些是否会有所帮助。
如何减少使用的内存量以便增加图像大小?
是否有可能牺牲训练时间/计算速度来支持更高分辨率的数据,同时保持模型的有效性?
注意:以上模型不是最终的,只是一个基本的支出。