KerasのSimpleRNN,LSTM,GRU等のreturn_sequencesについてのメモ

kerasのRNN関連で出てくるreturn_sequencesについて簡単にメモしておきます。

return_sequencesの役割としては名前の通り系列を返すことを意味します。

これだけだとよくわからないのでreturn_sequences=False, Trueの挙動について図で表してみます。

ちなみに以下の図はRNNをアンロールしたものです。これを基本として説明していきます。

return_sequences=Falseの時

まずはreturn_sequences=Falseの時ですが、系列は返さず最後の出力だけを返します。

簡単なモデルを作って確認してみます。

>>> from tensorflow.keras.models import Sequential
>>> from tensorflow.keras.layers import LSTM
>>> model = Sequential()
>>> model.add(LSTM(1, input_shape=(5,1), return_sequences=False))
>>> model.input_shape
(None, 5, 1)
>>> model.output_shape
(None, 1)

図と同じように入力と出力の次元数が異なることがわかります。
出力は1になります。

return_sequences=Trueの時

逆にreturn_sequences=Trueの時は以下のようにすべてのセルからの出力を返します。

これも同様に実装してみます。

>>> model = Sequential()
>>> model.add(LSTM(1, input_shape=(5,1), return_sequences=True))
>>> model.input_shape
(None, 5, 1)
>>> model.output_shape
(None, 5, 1)

図と同じように入力と出力の次元数が同じであることがわかります。

参考文献

タイトルとURLをコピーしました