赞
踩
对于输入序列中的每个元素,每一层计算以下函数:
其中是在t时刻的隐藏状态,是在t时刻的输入。σ是sigmoid函数,*是逐元素的哈达玛积
对于多层GRU 第l层的输入(l≥2)是之前一层的隐藏状态,乘以dropout
input_size | 输入特征的大小 |
hidden_size | 隐藏层h特征的大小 |
num_layers | GRU层数。 例如,设置 num_layers=2 意味着将两个 GRU 堆叠在一起形成一个堆叠的 GRU,第二个 GRU 接收第一个 GRU 的输出并计算最终结果。 默认值:1 |
bias | 默认值True 上式的那些b是否为0,如果是False的话,那么这些b就都是0 |
batch_first | 如果为 True,则输入和输出Tensor的维度为 (batch, seq, feature) 而不是 (seq, batch, feature)。 默认值:False |
dropout | 如果非零,则在除最后一层之外的每个 GRU 层的输出上引入一个 Dropout 层,dropout 概率等于 dropout。 默认值:0 |
bidirectional | 如果是True,那么就变成双向GRU 默认值:False |
input:当batch_first=False的时候,维度为;否则是
h_0:
output:当batch_first=False的时候,维度为;否则是
h_n:
- import torch
-
- GRU=torch.nn.GRU(input_size=10,
- hidden_size=20,
- num_layers=20)
-
- input_tensor=torch.randn(5,3,10)
- '''
- 输入的sequence长5
- batch_size为3
- 输入sequence每一个元素的维度为10
- '''
- h0=torch.randn(1*20,3,20)
- '''
- 第一个参数:单方向GRU(1),20层GRU(20)
- 第二个参数:batch_size
- 第三个参数:hidden_size的大小
- '''
- output,hn=GRU(input_tensor,h0)
- output.shape,hn.shape
- #(torch.Size([5, 3, 20]), torch.Size([20, 3, 20]))
和GRU几乎完全一模一样,这里说几个不同的地方:
声明的时候,在bidirectional 后面还有一个参数proj_size,默认为0。如果这个参数为0,那么Hc和Hout的维度都是;如果参数大于0,那么Hc仍然是,Hout变成
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。