2017-04-04 7 views
0

私は10Dセグメントの脳波データで1D CNNを実行しようとしていて、RNNを使ってセグメント間の時間的接続をカバーしようとしています。RNNとCNNとlasagneの組み合わせ

問題は、これはDIM-シャッフル層

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が今カバーするCNN出力batch_size x num_filters x sequence_length

ながらRNNがbatch_size x sequence_length x num_inputsで入力を期待していること、です時間的接続のみ以内sequence_lengthではなく、の間で異なるバッチはそうですか?

セグメント間の時間的接続を取得するにはどうすればよいですか?

RNNは確かに一つだけのバッチ内の依存関係を学びます。自分の質問に答える

答えて

0

。 しかし、Kerasはバッチ間で遷移する状態を可能にするモードがあります 各バッチのi番目の要素となる。

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

今では正しい順序でバッチを供給することが重要であるstateful=True

時間t-1におけるi番目のバッチの状態で学習される。つまり、バッチを送るときには非常に注意する必要があります。

注:これはセルの状態のみを遷移させ、バッチ間では逆伝播しません。副作用として、あなたの初期状態を予測しながら設定し、結果をバイアスする必要があります。

関連する問題