pytorch中RNN注意事项(关于input和output维度)

pytorch中RNN注意事项
batch_first为False的情况下,认为input的数据维度是(seq,batch,feature),output的数据维度(seq,batch,feature)。
batch_first为False的情况下,认为input的数据维度是(batch,seq,feature),output的数据维度(batch,seq,feature)。

1、Pytorch中的RNN参数详解
rnn = nn.RNN(*arg,**kwargs)
(1)input_size:输入x t x_tx
t

的维度
(2)hidden_size:输出h t h_th
t

的维度
(3)num_layers:网络的层数,默认为1层
(4)nonlinearity:非线性激活函数,默认是tanh,也可以选择relu等
(5)bias:是否有偏置。默认为True
(6)batch first:决定网络输入的维度顺序,默认为(seq,batch,feature),如果参数设置为True,顺序变为(batch,seq,feature)。RNN batch在第二个维度,CNN batch在第一个维度。
(7)dropout:接受一个0-1之间的数值,会在网络中除了最后一层外的其他输出层加上dropout层。
(8)bidirectional:默认为False,表示单项循环神经网络;如果设置为True,就是双向循环神经网络。

2、输入、输出的维度
(1)网络节后一个序列输入x t x_tx
t

和记忆输入h 0 h_0h
0

。x t x_tx
t

的维度是(seq,batch,feature);h 0 h_0h
0

隐状态的维度( l a y e r s ∗ d i r e c t i o n , b a t c h , h i d d e n ) (layersdirection,batch,hidden)(layers∗direction,batch,hidden),表示层数乘以方向(单项为1,双向为2),批量,输出的维度
(2)网络会输出output和h t h_th
t

。output表示网络实际的输出,维度是(seq,batch,hidden
direction),表示序列长度、批量和输出维度乘以方向;h t h_th
t

表示记忆单元,维度( l a y e r s ∗ d i r e c t i o n , b a t c h , h i d d e n ) (layers*direction,batch,hidden)(layers∗direction,batch,hidden),表示层数乘以方向,批量,输出的维度

3、需要注意的问题:
(1)网络输出是( s e q , b a t c h , h i d d e n ∗ d i r e c t i o n ) (seq,batch,hiddendirection)(seq,batch,hidden∗direction),direction=1或2。如果是双向的网络结构,相当于网络从左往右计算一次,再从右往左计算依次,这样会有两个结果。将两个结果按最后一个维度拼接起来,就是输出的维度。
(2)隐藏状态的网络大小、输入和输出都是(layer
direction,batch,hidden)时,因为如果网络有多层,那么每一层都有一个新的记忆单元,而双向网络结构在每一层左右会有两个不同的记忆单元,所以维度的第一位是l a y e r ∗ d i r e c t i o n layer*directionlayer∗direction

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值