簡體   English   中英

將RNN和CNN與烤寬面條結合

[英]combining RNN and CNN with lasagne

我試圖在10s的EEG數據段上運行一維CNN,然后使用RNN覆蓋各段之間的時間連接。

問題是,RNN希望輸入的內容為batch_size x sequence_length x num_inputs而CNN輸出的是batch_size x num_filters x sequence_length

這可以通過暗淡改組來解決

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 的時間連接,而不覆蓋不同批次之間的時間連接,對嗎?

如何獲得片段之間的時間聯系?

回答我自己的問題:

RNN實際上只會在一批內學習依賴項。 但是,Keras具有允許狀態在批之間轉換的模式: stateful=True

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

現在,以正確的順序喂入批次很重要:每個批次的第i個元素將在時間t-1處獲得第i個批次的狀態。 這意味着在分批喂食時需要非常小心。

請注意,這只會轉換單元狀態,而不會在批次之間反向傳播。 作為副作用,必須設置預測時的初始狀態並使結果有偏差。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM