nn.RNNでpytorch()概要

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形状

  1. = input_shape [時間ステップの数、バッチサイズ、フィーチャ寸法] = [num_steps(seq_length)のために、BATCH_SIZE、input_dim]
  2. フロントへのリターンを計算した後、それぞれ输出、及び隐藏状态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上記便宜上

GRU /上記のパラメータRNNとLSTM

公開された33元の記事 ウォンの賞賛1 ビュー2620

おすすめ

転載: blog.csdn.net/orangerfun/article/details/103934290