すべての人に対する深い学習2::RNN 11-1 Basics


RNN in PyTorch


PyTorchでは、RNNは2行でセルを定義できます.
  • 第1行=torch.nn.RNN()を使用してinputsizeおよびhiddensizeを宣言します.cellを定義する文と考えられます.
  • の2行目=Aの関数に入力値と前の状態を加え、出力文と見なします.このときinput dataは3次元のテンソルとして定義される.
  • 以外のコード:データサイズを変換するプロセス
  • Simple Example :: input

  • 1-hot符号化:1-hot符号化単語のベクトルを辞書形式でリストし、対応する文字のインデックスの1を開き、0にドラッグします.
  • Simple Example :: hidden state

  • 出力ベクトル寸法に基づいて寸法
  • を決定する.
  • 非表示状態は出力とは異なり、次のシーケンス入力に渡される.
  • 四半期に送信され、出力と非表示の状態が同じサイズで出力されます.
  • Simple Example :: Sequence Length

  • 型番自動認識シーケンス長
  • hello単語の長さを理解して出力5

  • Simple Example :: Batch Size

  • モデルバックアップサイズの自動決定
  • ソースコード

    import torch
    import numpy as np
    
    # Random seed to make results deterministic and reproducible
    torch.manual_seed(0)
    
    # declare dimension
    input_size = 4
    hidden_size = 2
    
    # singleton example
    # shape : (1, 1, 4)
    # input_data_np = np.array([[[1, 0, 0, 0]]])
    
    # sequential example
    # shape : (3, 5, 4)
    h = [1, 0, 0, 0]
    e = [0, 1, 0, 0]
    l = [0, 0, 1, 0]
    o = [0, 0, 0, 1]
    input_data_np = np.array([[h, e, l, l, o], [e, o, l, l, l], [l, l, e, e, l]], dtype=np.float32)
    
    # transform as torch tensor
    input_data = torch.Tensor(input_data_np)
    
    # declare RNN
    rnn = torch.nn.RNN(input_size, hidden_size)
    
    # check output
    outputs, _status = rnn(input_data)
    print(outputs)
    print(outputs.size())