Keras ConvLSTM2D:为什么使用averagepooling3d以及如何回归

时间:2019-03-23 10:55:17

标签: python keras regression lstm

我一直在学习Keras ConvLSTM2D: ValueError on output layer

我想使用相同的代码,但我想进行回归(单一值)。 我不知道该怎么做。而且我也不了解此邮政编码的最后几层。为什么要使用averagepolling3d?

链接的代码为

model = Sequential()

model.add(ConvLSTM2D(
        filters=40,
        kernel_size=(3, 3),
        input_shape=(None, 135, 240, 1),
        padding='same',
        return_sequences=True))
model.add(BatchNormalization())

model.add(ConvLSTM2D(
        filters=40,
        kernel_size=(3, 3),
        padding='same',
        return_sequences=True))
model.add(BatchNormalization())

model.add(ConvLSTM2D(
        filters=40,
        kernel_size=(3, 3),
        padding='same',
        return_sequences=True))
model.add(BatchNormalization())

model.add(AveragePooling3D((1, 135, 240)))
model.add(Reshape((-1, 40)))
model.add(Dense(
        units=9,
        activation='sigmoid'))

model.compile(
        loss='categorical_crossentropy',
        optimizer='adadelta'
)

1 个答案:

答案 0 :(得分:0)

AveragePooling3D用于将序列中的每个帧减少为单个值+以减少密集层中的#parameters。因此,维度变为(None, 40 , 1 , 1 ,1 )。然后,使用Reshape允许它用于完全连接的零件。

此外,如Keras ConvLSTM2D: ValueError on output layer一样,使用AveragePooling3D代替GlobalMaxPooling2D,因为数据是5D且Global操作仅留下(batch_size, channels),这在您的情况。

相关问题