pytorch nn.RNN 参数解释

here是pytorch官方文档,有对每一个参数的具体描述,不过看完之后你可能还会有些问题,主要是隐藏层和输入输出层的size是怎么确定的。
以官方代码为例

import torch
import torch.nn as nn
rnn = nn.RNN(10, 20, 2)
input = torch.randn(5, 3, 10)
h0 = torch.randn(2, 3, 20)
output, hn = rnn(input, h0)
print(output.size(),hn.size())
运行结果
torch.Size([5, 3, 20]) torch.Size([2, 3, 20])

RNN(输入维度,隐藏层维度,网络层数)
在期末复习时翻看pytorch官网代码时找到了自己的错误,官网上已经给出了输入输出维度的解释,我当时没仔细看,自己理解结果全错。现在大致解释以下,等考完试再详解:
输入:句子长度 X batchsize X 输入维度
输入的隐藏层h0: 网络层数*网络方向数(如果双向就为2) X bathsize X 隐藏层维度(因为每一层网络的每一个输入都需要一个隐藏向量,正向输入和反向输入需要的隐藏层向量不一样)
输出:句子长度 X batchsize X 网络方向数(如果双向就为2)* 隐藏层维度
输出的隐藏层hn:网络层数 * 网络方向数(如果双向就为2) X batchsize X 隐藏层维度

ps: RNN()中有一个参数是batch_first – If True, then the input and output tensors are provided as (batch, seq, feature). Default: False这个表示如果你不做更改,它会默认你输入的向量形式是(句子长度,batchsize,输入维度)这个和我们一贯想的不一样,需要注意

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值