我有一些用于预测值(线性激活)的图像,而且我对使用神经网络还比较陌生。我所包含的图像包含很多细节,并且具有很高的分辨率,但是由于它们是卫星图像,由于尺寸较大(8090、12894),这是有问题的。我的目标是0到1之间的标量。
我的目标是使用排序(通过ConvLSTM进行RNN)和卷积来更好地预测值。
我的步骤如下:
我想帮助我为目标优化模型,缩小内存中的模型大小,但提高准确性。
以下是我代码的相关部分:
def build_model(frames=seq_len, channels=3, pixels_x=w, pixels_y=h, kernel_sizing=kernel_sizing):
model = Sequential()
model.add(
ConvLSTM2D(filters=16
, kernel_size=kernel_sizing
, strides = 3
, data_format='channels_last'
, return_sequences = False
, activation='relu', input_shape=(frames, pixels_x, pixels_y, channels))
)
model.add(
Conv2D(filters=16
, kernel_size=(3,3)
, activation='relu')
)
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Flatten())
model.add(Dense(10, activation='relu'))
model.add(Dense(1, activation='linear'))
optimizer = tf.keras.optimizers.RMSprop(0.001)
model.compile(
loss = "mse",
optimizer = optimizer,
metrics=['mae', 'mse'])
return model
注意:
答案 0 :(得分:-1)
总的来说,这里有一些很好的建议可以改善模型的优化,从而避免可怕的“ ResourceExhaustedError:分配张量时的OOM”:
希望有帮助