chainer.functions.n_step_rnn(n_layers, dropout_ratio, hx, ws, bs, xs, activation='tanh')[source]

シーケンス入力のための積層一方向 RNN 関数。

 

この関数はシーケンスを伴う積層一方向RNNを計算します。隠れ状態の初期値h0、セル状態の初期値 c0 、入力シーケンス x、 荷重行列 W、バイアスベクトルb. を取得します。また、各時間 t において、入力 xtから隠れ状態 htctを計算します。h0c0xWbhtcttxt

ht=f(W0xt+W1ht1+b0+b1)
ただし f

は活性関数。

荷重行列 W

は2つの行列 WfWbを含みます。 Wf は順方向のRNNの荷重行列です。Wb

逆方向のRNNの荷重行列です。

Wf

は入力シーケンスのための Wf0 と隠れ状態のための  Wf1 を含みます。 Wb は入力シーケンスのための Wb0 と隠れ状態のための Wb1

を含みます。

 

バイアス行列 b

は2つの行列 bfbfを含みます。 bf は入力シーケンスのための bf0 と隠れ状態のための bf1を含みます。 bb は入力シーケンスのための bb0 と隠れ状態のための bb1

を含みます。

 

この関数はシーケンスを受容するので、全ての t

における ht を一度の呼び出しで計算します。 2つの荷重行列と2つのバイアスベクトルは各層について必要になります。ですからS層が存在する場合、2S 個の荷重行列と 2S

個のバイアスベクトルを用意する必要があります。

 

層の数 n_layers1

より大きい場合、  k層目の入力は k-1層目の隠れ状態h_t です。1層目を除く全ての層の入力値は、1層目と異なるshapeである可能性があることに、注意してください。ht=f(W0xt+W1ht−1+b0+b1)
Warning

train と use_cudnn 引数はv2以降サポートされません。替わりにそれぞれchainer.using_config('train', train)chainer.using_config('use_cudnn', use_cudnn) を使用してください。 

chainer.using_config()をお読みください。

Parameters:
  • n_layers (int) – 層の数
  • dropout_ratio (float) – ドロップアウト率
  • hx (chainer.Variable) – 積層隠れ状態を保持している変数。 shape は (S, B, N) 、ただしS は 層の数であり、 n_layersに等しい。 B はミニバッチサイズ、 N は隠れユニットの次元。 
  • ws (list of list of chainer.Variable) – 荷重行列。ws[i + di] はi層目の荷重を表す。順方向RNNの di = 0 と逆方向RNNの di = 1 に注意。 各 ws[i + di] は2つの行列を含むリストであり、等式においていは ws[i + di][j] は di = 0 の場合のW^{f}_j に相当し、 di = 1 の場合のW^{b}_j に相当する。ws[0][j]ws[1][j] が0 <= j < 1 である場合においてのみ、入力値を掛けた (I, N) shape。それ以外では全て (N, N) shape。
  • bs (list of list of chainer.Variable) – バイアスベクトル。 bs[i + di] はi層目のバイアスを表す。 順方向RNNのための di = 0 fと逆方向RNNの di = 1 に注意。各bs[i + di] は2つのベクトルを含む。等式においては bs[i + di][j] は di = 0  の場合のb^{f}_j に相当し  di = 1 の場合の b^{b}_j に相当する。各行列のshapeは (N,) 、ただし N は隠れユニットの次元。 
  • xs (list of chainer.Variable) – 入力値を保持している Variable のリスト。各要素xs[t] は t時点の入力値を保持している。 そのshape は(B_t, I)であり、ただし B_tt時点のミニバッチサイズで I は入力ユニットのサイズ。この関数は 可変長のシーケンスをサポートしているので注意。シーケンスが異なる長さの時、長さによって降順にソートしソーとされたシーケンスを転置する。 . transpose_sequence() シーケンスを保持している Variable() のリストを転置する。そのため xs は xs[t].shape[0] >= xs[t + 1].shape[0]を満たす必要がある。
  • activation (str) – 活性関数名。 tanh か reluを選択してください。
Returns:

この関数は3つの要素(訳注:2つ?)hy と ysを結合したタプルを返す。

  • hy は更新された隠れ状態で、shape は hxと同じ。
  • ys は  Variable のリスト。各要素ys[t] は入力xs[t].に相当する最後の層の隠れ状態を保持する。shape は (B_t, N) 、ただし B_t は t時点におけるミニバッチサイズ、 N は隠れユニットのサイズ。 B_t は  xs[t]と同じ値であることに注意。
Return type:

tuple