【问题标题】:Keras ConvLSTM2D: why use the averagepooling3d and how to to regressionKeras ConvLSTM2D:为什么使用averagepooling3d以及如何回归
【发布时间】:2019-08-14 05:28:39
【问题描述】:

我一直在学习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'
)

【问题讨论】:

    标签: python keras regression lstm


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-31
      • 2010-10-17
      • 2018-01-15
      • 1970-01-01
      • 2012-03-06
      相关资源
      最近更新 更多