pytorch中RNN Layer

pytorch中RNN Layer_第1张图片

  • 必选参数 input_size,指定输入序列中单个样本的尺寸大小,例如可能用一个 1000 长度的向量表示一个单词,则 input_size=1000
  • 必选参数 hidden_size,指的是隐藏层中输出特征的大小
  • 必选参数 num_layers,指的是纵向的隐藏层个数,一般设置为 1~10,default=1

 

接下来看一个2层的RNN模型

pytorch中RNN Layer_第2张图片

在解释 ht 和 out 之前要先理解一个概念 —— 时间戳,时间戳是针左右而不是上下,什么意思呢,就是上图是一个两层的 RNN,假设这两层的 RNN 右边分别又各接一层,那这样的左右结构就是时间戳,基于此,给出 ht 和 out 的定义:

  • ht:最后一个时间戳上面所有的 memory 状态
  • out:所有时间戳上的最后一个 memory 状态

如下所示的代码片段

import torch
import torch.nn as nn

rnn = nn.RNN(input_size=100, hidden_size=20, num_layers=4)
x = torch.randn(10, 3, 100)
out, h_t = rnn(x)
print(out.shape) # [10, 3, 20]
print(h_t.shape) # [4, 3, 20]

其中RNN的参数为input_size即单个样本的尺寸大小为100,hidden_size即隐藏层中输出特征的大小为20,num_layers即纵向的隐藏层个数为4

输入:input (seq_len, batch, input_size)--->(10,3,100)

输出:output  (seq_len, batch, num_directions * hidden_size)-->(10,3,20)

           h_t         (num_layers * num_directions, batch, hidden_size)-->(4,3,20)

参考于https://wmathor.com/index.php/archives/1392/

你可能感兴趣的:(pytorch中RNN Layer)