【问题标题】:combining RNN and CNN with lasagne将 RNN 和 CNN 与千层面相结合
【发布时间】:2017-08-29 07:11:31
【问题描述】:

我正在尝试在 10s 段的 EEG 数据上运行 1D CNN,然后使用 RNN 覆盖这些段之间的时间连接。

问题是,RNN 期望输入 batch_size x sequence_length x num_inputs 而 CNN 输出 batch_size x num_filters x sequence_length

这可以通过一个 dim-shuffle 层来解决

network = L.InputLayer(shape=(None, data_size[1], data_size[2]), input_var=input_var)
network = L.Conv1DLayer( network, num_filters=32, filter_size = 5) 
network = L.DimshuffleLayer(network, (0, 2, 1))
network = L.LSTMLayer(network, 200)

但据我了解,RNN 现在将仅涵盖 sequence_length 内的时间连接,而不是 不同批次之间的时间连接,对吗?

如何获得片段之间的时间连接?

【问题讨论】:

    标签: python theano recurrent-neural-network lasagne


    【解决方案1】:

    回答我自己的问题:

    RNN 确实只会在一批中学习依赖关系。 但是,Keras 有一种允许状态在批次之间转换的模式:stateful=True

    network = keras.layers.LSTM(network, stateful=True)

    现在以正确的顺序喂料很重要: 每个批次的第 i 个元素将使用第 i 个批次在时间 t-1 的状态进行学习。这意味着您在喂食批次时需要非常小心。

    注意,这只会转换单元状态,不会在批次之间反向传播。作为副作用,您在预测时的初始状态必须设置并偏向您的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多