【问题标题】:Where to use dilated convolution in autoencoder for temporal data?在自动编码器中哪里使用扩张卷积来处理时间数据?
【发布时间】:2018-07-15 07:11:08
【问题描述】:

我正在尝试在 Keras 中为具有一维卷积的时间序列数据构建和编码器-解码器模型。考虑这个简单的模型:

inputs = Input(shape = (timesteps, input_dim))
t = Conv1D(16, kernel_size=3, padding='same')(inputs)
encoded = Conv1D(16, kernel_size=2, strides=2)(t)

t = UpSampling1D(2)(encoded)
t = Conv1D(16, kernel_size=3, padding='same')(inputs)
decoded = Conv1D(1, kernel_size=3, padding='same')(t)

model = Model(inputs, decoded)

我的问题是:

  1. 在哪里使用膨胀 (dilation_rate=2)?仅在编码器中还是在两者中以最大化感受野?

  2. 我应该使用什么作为潜在表示?全连接层、低维图像(如上)、池化还是更少的过滤器?

【问题讨论】:

  • 为什么要使用dilation
  • 为了最大化感受野并能够将序列中的所有信息压缩到一个小的数据结构中

标签: keras conv-neural-network autoencoder


【解决方案1】:

此答案适用于通过谷歌来到这里的其他人:

Dilation VS stride:Stride 使响应变小。所以你只使用一次。膨胀通过在两者之间添加零使内核变大。它将产生与 strides 相同的效果,但不会使响应变小。 Keras/tf.keras 示例:

x = input_img

x = Conv2D(16, (3, 3), padding='valid')(x)
x = Conv2D(16, (3, 3), strides=2, padding='valid')(x)
x = Conv2D(16, (3, 3), padding='valid')(x)
x = Conv2D(16, (3, 3), strides=2, padding='valid')(x)
x = Conv2D(16, (3, 3), padding='valid')(x)

encoded = Conv2D(num_featers, (2, 2), padding='valid')(x)

等同于:

x = Conv2D(16, (3, 3), padding='valid')(x)
x = Conv2D(16, (3, 3), padding='valid')(x)
x = Conv2D(16, (3, 3), dilation_rate=2, padding='valid')(x)
x = Conv2D(16, (3, 3), dilation_rate=2, padding='valid')(x)
x = Conv2D(16, (3, 3), dilation_rate=4, padding='valid')(x)

encoded = Conv2D(num_featers, (2, 2), dilation_rate=4, padding='valid')(x)

如果您像这样用 dilation_rate 替换自动编码器中的步幅,它将起作用。 (Conv2dTranspose 也有 dilation_rate 但不起作用:https://github.com/keras-team/keras/issues/8159。解决方法是使用 strides(编码器)和 upscaling2d(解码器)训练您的网络。当您使用它时,将这些权重加载到一个更简单的带有膨胀的编码器中。)

关于池化:在这种情况下不需要池化,但它可以帮助消除位置偏差。其他方法是翻译增强以获得相同的结果。根据您的问题,您是否想要这个。

完全连接:完全不合时宜。只需使用具有大小的卷积层来连接所有内容。这完全一样,但可以有更大的输入。

更少或更多过滤器:我永远不知道。可视化您的过滤器和/或过滤器响应。如果您看到过滤器非常相似,那么您已经习惯了许多过滤器。或者没有足够地激发差异(辍学和数据增强可以帮助解决它)。

【讨论】:

    猜你喜欢
    • 2021-12-20
    • 2020-08-20
    • 1970-01-01
    • 2020-02-11
    • 2018-11-12
    • 1970-01-01
    • 2017-11-11
    • 2019-12-01
    • 2018-05-02
    相关资源
    最近更新 更多