【发布时间】:2020-03-14 05:28:26
【问题描述】:
我做了一个 ConvLSTM 层,但由于尺寸问题,它不起作用。
INPUT_SHAPE = (None, IMAGE_HEIGHT, IMAGE_WIDTH, IMAGE_CHANNELS)
这是我的意见
model = Sequential()
model.add(Lambda(lambda x: x/127.5-1.0, input_shape=INPUT_SHAPE))
model.add(ConvLSTM2D(24, (5, 5), activation='relu', padding='same', return_sequences=True))
model.add(BatchNormalization())
model.add(ConvLSTM2D(36, (5, 5), activation='relu', return_sequences=True))
model.add(BatchNormalization())
model.add(ConvLSTM2D(48, (5, 5), activation='relu',return_sequences=True))
model.add(BatchNormalization())
model.add(ConvLSTM2D(64, (3, 3), activation='relu',return_sequences=True))
model.add(BatchNormalization())
model.add(ConvLSTM2D(64, (3, 3), activation='relu',return_sequences=True))
model.add(BatchNormalization())
model.add(TimeDistributed(Flatten()))
model.add(Dropout(0.5))
model.add(TimeDistributed(Dense(100, activation='relu')))
model.add(BatchNormalization())
model.add(Dropout(0.5))
model.add(TimeDistributed(Dense(50, activation='relu')))
model.add(BatchNormalization())
model.add(Dropout(0.5))
model.add(TimeDistributed(Dense(20, activation='relu')))
model.add(BatchNormalization())
model.add(Dropout(0.5))
model.add(Dense(2))
model.summary()
这是网络模型。
history = model.fit_generator(batcher(data_dir, X_train, y_train, batch_size, True),
samples_per_epoch,
nb_epoch,
max_q_size=1,
validation_data=batcher(data_dir, X_valid, y_valid, batch_size, False),
nb_val_samples=len(X_valid),
callbacks=[checkpoint],
verbose=1)
它是适合的生成器。
但我收到一条错误消息。
ValueError:检查输入时出错:预期 lambda_7_input 有 5 个维度,但得到的数组形状为 (50, 66, 200, 3)
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lambda_7 (Lambda) (None, None, 66, 200, 3) 0
_________________________________________________________________
conv_lst_m2d_29 (ConvLSTM2D) (None, None, 66, 200, 24) 64896
_________________________________________________________________
batch_normalization_27 (Batc (None, None, 66, 200, 24) 96
_________________________________________________________________
conv_lst_m2d_30 (ConvLSTM2D) (None, None, 62, 196, 36) 216144
_________________________________________________________________
batch_normalization_28 (Batc (None, None, 62, 196, 36) 144
_________________________________________________________________
conv_lst_m2d_31 (ConvLSTM2D) (None, None, 58, 192, 48) 403392
_________________________________________________________________
batch_normalization_29 (Batc (None, None, 58, 192, 48) 192
_________________________________________________________________
conv_lst_m2d_32 (ConvLSTM2D) (None, None, 56, 190, 64) 258304
_________________________________________________________________
batch_normalization_30 (Batc (None, None, 56, 190, 64) 256
_________________________________________________________________
conv_lst_m2d_33 (ConvLSTM2D) (None, None, 54, 188, 64) 295168
_________________________________________________________________
batch_normalization_31 (Batc (None, None, 54, 188, 64) 256
_________________________________________________________________
time_distributed_6 (TimeDist (None, None, 649728) 0
_________________________________________________________________
dropout_6 (Dropout) (None, None, 649728) 0
_________________________________________________________________
time_distributed_7 (TimeDist (None, None, 100) 64972900
_________________________________________________________________
batch_normalization_32 (Batc (None, None, 100) 400
_________________________________________________________________
dropout_7 (Dropout) (None, None, 100) 0
_________________________________________________________________
time_distributed_8 (TimeDist (None, None, 50) 5050
_________________________________________________________________
batch_normalization_33 (Batc (None, None, 50) 200
_________________________________________________________________
dropout_8 (Dropout) (None, None, 50) 0
_________________________________________________________________
time_distributed_9 (TimeDist (None, None, 20) 1020
_________________________________________________________________
batch_normalization_34 (Batc (None, None, 20) 80
_________________________________________________________________
dropout_9 (Dropout) (None, None, 20) 0
_________________________________________________________________
dense_8 (Dense) (None, None, 2) 42
=================================================================
Total params: 66,218,540
Trainable params: 66,217,728
Non-trainable params: 812
【问题讨论】:
-
您的
x_train和y_train的形状是什么?此外,在层输出形状中包含多个None通常不是一个好主意。 -
@thushv89 抱歉回答迟了。 print(X_train.shape) 和 print(y_traint.shape) 的结果是 (10908,) 和 (10908,2)。我确实在 Input 上写了批量大小,但得到了相同的错误消息
-
这不是您要指定的批量大小,而是时间步数(即第二个无)。另外,您的
X_train有两个功能?但是,你为什么要使用 ConvLSTM?这是二维时间序列数据(如视频) -
@thushv89 X_train 是具有 10908 个样本的单个图像。我试图制作预测模型(速度、转向角)。所以它有2个输出。但是对于速度预测,我需要 rnn 才能知道物体是更近还是更远。 Cnn 还不够
-
那么
X_train是一张包含 10908 个样本的图片?你能详细说明吗? “图像中的样本”是什么意思?如果您能提供更多详细信息,那就更好了。
标签: python conv-neural-network recurrent-neural-network