nn.RNN(input_size、hidden_size、num_layers = 1、非線形= TANH、バイアス=真、batch_first = Falseを、ドロップアウト= 0、双方向=偽)
パラメータ説明
input_size
入力フィーチャ寸法は、一般的に単語ベクトルに等しいRNN入力単語ベクトル、次いでinput_size寸法でありますhidden_size
寸法出力(RNNとして出力は、各時間ステップで隠されている)と呼ばれ、また層のニューロン数隠され、又はnum_layers
ネットワーク層nonlinearity
アクティベーション機能bias
かどうかは、バイアスbatch_first
デフォルトは偽であり、これは、最初の場所での系列長である形態、(配列(num_step)、バッチ、input_dim)、2位BATCH入力データの形式でありますdropout
ドロップアウトを適用するかどうかは、デフォルトで使用されていない、0-1にデジタルを使用するように設定する必要がありますbirdirectional
かどうかは、デフォルトはFalseで、双方向のRNNを使用する
ことに注意してくださいいくつかのパラメータのデフォルト値は、タイトルに指定されています
O形状
- = input_shape [時間ステップの数、バッチサイズ、フィーチャ寸法] = [num_steps(seq_length)のために、BATCH_SIZE、input_dim]
- フロントへのリターンを計算した後、それぞれ
输出
、及び隐藏状态h
前記出力隠れ層の手段と、各時間ステップで計算された出力は隠され、それらは一般的に入力STARTとして出力層に従います。これは、「出力」自体が算出される出力層に向けられていないことが強調され、(時間ステップの数、バッチサイズ、隠れユニットの数)の形状、隠された状態が隠れ状態最後の時間ステップの隠れ層を指す:ときに隠します多層層は、あるレベルの各々が非表示状態変数に記録されている場合、对于像⻓短期记忆(LSTM),隐藏状态是⼀个元组(h, c),即hidden state和cell state(此处普通rnn只有一个值)
Hの形状隠された(層の数、バッチサイズを、隠れユニットの数)
コード
rnn_layer = nn.RNN(input_size=vocab_size, hidden_size=num_hiddens, )
# 定义模型, 其中vocab_size = 1027, hidden_size = 256
num_steps = 35
batch_size = 2
state = None # 初始隐藏层状态可以不定义
X = torch.rand(num_steps, batch_size, vocab_size)
Y, state_new = rnn_layer(X, state)
print(Y.shape, len(state_new), state_new.shape)
輸出
torch.Size([35, 2, 256]) 1 torch.Size([1, 2, 256])
具体的な計算
幅x高-WHHの入力のHt * = +のHt。1 * + BIAS
[BATCH_SIZE、input_dim] * [input_dim、num_hiddens] + [BATCH_SIZE、num_hiddens] * [num_hiddens、num_hiddens] + BIASは、
各形状の隠された状態を見つけることができるです[BATCH_SIZE、num_hiddens]は、初期出力は同じである
。注:仮説num_step = 1上記便宜上