[source]

Recurrent

keras.layers.recurrent.Recurrent(return_sequences=False, go_backwards=False, stateful=False, unroll=False, implementation=0)

Recurrentレイヤーに対する抽象的な基底クラス. モデルの中では利用しないでください -- これは直接利用可能なレイヤーではありません! 代わりに子クラスであるLSTM, GRU, SimpleRNNを利用してください.

すべてのRecurrentレイヤー (LSTM, GRU, SimpleRNN) はこのクラスの仕様に従い,下に列挙したキーワード引数が使用可能です.

# Sequentialモデルの最初のレイヤーとして
model = Sequential()
model.add(LSTM(32, input_shape=(10, 64)))
# ここで model.output_shape == (None, 32)
# 注: `None`はバッチ次元.

# 2層目以降のレイヤーに対しては,入力サイズを指定する必要はありません:
model.add(LSTM(16))

# to stack recurrent layers, you must use return_sequences=True
# on any recurrent layer that feeds into another recurrent layer.
# note that you only need to specify the input size on the first layer.
model = Sequential()
model.add(LSTM(64, input_dim=64, input_length=10, return_sequences=True))
model.add(LSTM(32, return_sequences=True))
model.add(LSTM(10))

引数

  • weights: 重みの初期値に用いるnumpy 配列のリスト. リストは次のshapeを持つ3つの要素からなります: [(input_dim, output_dim), (output_dim, output_dim), (output_dim,)].
  • return_sequences: 真理値.出力系列の最後の出力を返すか,完全な系列を返すか.
  • go_backwards: 真理値(デフォルトはFalse).Trueなら,入力系列の逆向きから処理します.
  • stateful: 真理値(デフォルトはFalse).Trueなら,バッチ内のインデックスiの各サンプル に対する最後の状態が次のバッチ内のインデックスiのサンプルに対する初期状態として使われます.
  • unroll: 真理値(デフォルトはFalse).Trueなら,ネットワークは展開され, そうでなければシンボリックループが使われます. 展開はよりメモリ集中傾向になりますが,RNNをスピードアップできます. 展開は短い系列にのみ適しています.
  • implementation: {0, 1, 2}のいずれか. 0なら,RNNは,少なく大きな行列積を計算するため,CPU上では速くなりますが,メモリの消費は大きいです. 1なら,小さい行列に対して多く行列積を計算するため,より遅くなります(GPUでは速いかもしれません)が,メモリの消費は小さいです. (LSTM/GRU のみで) 2なら,入力ゲートと忘却ゲートを組み合わせます,忘却ゲートと出力ゲートは1つの行列になり,GPU並列時の時間効率をあげます.
    • Note: RNN dropout は全ゲートで共有しなければなりません,結果として僅かに汎化性能が低下します.
  • input_dim: 入力の次元(整数). この引数(または代わりのキーワード引数input_shape)は, このレイヤーをモデルの最初のレイヤーとして利用するときに必要です.
  • input_length: 入力系列の長さ. この引数はこのレイヤーの後にFlattenからDenseレイヤーへ接続する際に必要です (これがないと,denseの出力のshapeを計算できません). Recurrentレイヤーがモデルの最初のレイヤーでなければ, 最初のレイヤーのレベルで入力系列の長さを指定する必要があります (例えばinput_shape引数を通じて).

入力のshape

shapeが(batch_size, timesteps, input_dim)の3階テンソル.(オプション)shapeが(batch_size, output_dim)の2階テンソル.

出力のshape

  • return_sequencesがTrue: shapeが(batch_size, timesteps, output_dim)の3階テンソル.
  • そうでないとき,shapeが(batch_size, output_dim)の2階テンソル.

マスキング

このレイヤーはタイムステップの変数を持つ入力データに対するマスキングをサポートします. あなたのデータにマスクを導入するためには, mask_zeroパラメータにTrueを渡したEmbeddingレイヤーを利用してください.

RNNで状態管理を利用するときの注意点

状態管理を可能にするためには: - レイヤーコンストラクタにおいてstateful=Trueを指定してください. - もしsequentialモデルなら: batch_input_shape=(...)を最初のレイヤーに 1つ以上の入力層をもったfunctionalモデルなら: batch_input_shape=(...)をモデルのすべての最初のレイヤーに 渡すことで固定系列長のバッチサイズを指定してください. これはバッチサイズを含む入力の期待されるshapeです. これは整数のタプルであるべきです,例えば(32, 10, 100). - fit()を呼ぶときは,stateful=False を指定してください.

モデルの状態を再設定するには,指定したレイヤーもしくはモデル全体で.reset_states()を呼び出してください.

RNNの初期状態を指定するときの注意点

initial_stateのキーワード引数を渡してRNNを呼び出すことで,内部状態の初期値を指定できます. initial_stateの値は,RNNの初期値を表現したテンソルかテンソルのリストです.


[source]

SimpleRNN

keras.layers.recurrent.SimpleRNN(units, activation='tanh', use_bias=True, kernel_initializer='glorot_uniform', recurrent_initializer='orthogonal', bias_initializer='zeros', kernel_regularizer=None, recurrent_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, recurrent_constraint=None, bias_constraint=None, dropout=0.0, recurrent_dropout=0.0)

出力が入力にフィードバックされる全結合RNN.

引数

  • units: 正の整数値,出力の次元数.
  • activation: 活性化関数(activationsを参照).Noneを渡すと活性化関数は適用されません (例."linear" activation: a(x) = x).
  • use_bias: 真理値,biasベクトルを使うかどうか.
  • kernel_initializer: 入力の線形変換に使われるkernelの重み行列のためのInitializer(initializersを参照).
  • recurrent_initializer: 再帰の線形変換に使われるrecurrent_kernelの重み行列のInitializer(initializersを参照).
  • bias_initializer: biasベクトルのInitializer(initializersを参照).
  • kernel_regularizer: kernelの重み行列に適用するRegularizer関数(regularizerを参照).
  • recurrent_regularizer: recurrent_kernelの重み行列に適用するRegularizer関数(regularizerを参照).
  • bias_regularizer: biasベクトルに適用するRegularizer関数(regularizerを参照).
  • activity_regularizer: 出力 (そのactivation) に適用するRegularizer関数(regularizerを参照).
  • kernel_constraint: kernelの重み行列に適用するConstraint関数(constraintsを参照).
  • recurrent_constraint: recurrent_kernelの重み行列に適用するConstraint関数(constraintsを参照).
  • recurrent_constraint: biasベクトルに適用するConstraint関数(constraintsを参照).
  • dropout: 0から1の間の浮動小数点数.入力の線形変換においてdropするユニットの割合.
  • recurrent_dropout: 0から1の間の浮動小数点数.再帰の線形変換においてdropするユニットの割合.

References


[source]

GRU

keras.layers.recurrent.GRU(units, activation='tanh', recurrent_activation='hard_sigmoid', use_bias=True, kernel_initializer='glorot_uniform', recurrent_initializer='orthogonal', bias_initializer='zeros', kernel_regularizer=None, recurrent_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, recurrent_constraint=None, bias_constraint=None, dropout=0.0, recurrent_dropout=0.0)

ゲートのあるリカレントユニット - Cho et al. 2014.

引数

  • units: 正の整数値,出力の次元数.
  • activation: 活性化関数(activationsを参照).Noneを渡すと活性化関数は適用されません (例."linear" activation: a(x) = x).
  • recurrent_activation: 再帰計算時に使う活性化関数(activationsを参照).
  • use_bias: 真理値,biasベクトルを使うかどうか.
  • kernel_initializer: 入力の線形変換に使われるkernelの重み行列のためのInitializer(initializersを参照).
  • recurrent_initializer: 再帰の線形変換に使われるrecurrent_kernelの重み行列のInitializer(initializersを参照).
  • bias_initializer: biasベクトルのInitializer(initializersを参照).
  • kernel_regularizer: kernelの重み行列に適用するRegularizer関数(regularizerを参照).
  • recurrent_regularizer: recurrent_kernelの重み行列に適用するRegularizer関数(regularizerを参照).
  • bias_regularizer: biasベクトルに適用するRegularizer関数(regularizerを参照).
  • activity_regularizer: 出力 (そのactivation) に適用するRegularizer関数(regularizerを参照).
  • kernel_constraint: kernelの重み行列に適用するConstraint関数(constraintsを参照).
  • recurrent_constraint: recurrent_kernelの重み行列に適用するConstraint関数(constraintsを参照).
  • recurrent_constraint: biasベクトルに適用するConstraint関数(constraintsを参照).
  • dropout: 0から1の間の浮動小数点数.入力の線形変換においてdropするユニットの割合.
  • recurrent_dropout: 0から1の間の浮動小数点数.再帰の線形変換においてdropするユニットの割合.

References


[source]

LSTM

keras.layers.recurrent.LSTM(units, activation='tanh', recurrent_activation='hard_sigmoid', use_bias=True, kernel_initializer='glorot_uniform', recurrent_initializer='orthogonal', bias_initializer='zeros', unit_forget_bias=True, kernel_regularizer=None, recurrent_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, recurrent_constraint=None, bias_constraint=None, dropout=0.0, recurrent_dropout=0.0)

長短期記憶ユニット - Hochreiter 1997.

アルゴリズムの段階的な記述については, このチュートリアルを参照してください.

引数

  • units: 正の整数値,出力の次元数.
  • activation: 活性化関数(activationsを参照).Noneを渡すと活性化関数は適用されません("linear" activation: a(x) = x)).
  • recurrent_activation: 再帰計算時に使う活性化関数(activationsを参照).
  • use_bias: 真理値,biasベクトルを使うかどうか.
  • kernel_initializer: 入力の線形変換に使われるkernelの重み行列のためのInitializer(initializersを参照).
  • recurrent_initializer: 再帰の線形変換に使われるrecurrent_kernelの重み行列のInitializer(initializersを参照).
  • bias_initializer: biasベクトルのInitializer(initializersを参照).
  • unit_forget_bias: 真理値.Trueなら,初期化時に忘却ゲートのbiasに1加算.また,trueの場合は強制的にbias_initializer="zeros"になります.これはJozefowicz et al.で推奨されています.
  • kernel_regularizer: kernelの重み行列に適用するRegularizer関数(regularizerを参照).
  • recurrent_regularizer: recurrent_kernelの重み行列に適用するRegularizer関数(regularizerを参照).
  • bias_regularizer: biasベクトルに適用するRegularizer関数(regularizerを参照).
  • activity_regularizer: 出力(そのactivation)に適用するRegularizer関数(regularizerを参照).
  • kernel_constraint: kernelの重み行列に適用するConstraint関数(constraintsを参照).
  • recurrent_constraint: recurrent_kernelの重み行列に適用するConstraint関数(constraintsを参照).
  • recurrent_constraint: biasベクトルに適用するConstraint関数(constraintsを参照).
  • dropout: 0から1の間の浮動小数点数.入力の線形変換においてdropするユニットの割合.
  • recurrent_dropout: 0から1の間の浮動小数点数.再帰の線形変換においてdropするユニットの割合.

References