Pytorch中GRU模型的关键参数及输入输出维度
一、GRU模型的关键参数
input_size:输入的特征数,代表输入序列数据中每个值由多少个特征表示,比如NLP中,每个单次由几维的词向量表示;
hidden_size:隐藏层特征数;
num_layers:代表GRU的层数;
bias:是否带有偏置, False则没有偏置,即$b_{ih}=0, b_{hh}=0$. 默认为True
batch_first:输入序列中,第一个维度是否为batch. 默认为False;
dropout:除最后一层,每一层的输出都进行dropout,默认为: 0
bidirectional:是否为双向GRU,默认为False;
二、GRU模型的输入和输出及维度
2.1 输入
- GRU模型的输入为input和$h_0$,其中input是输入的序列数据,$h_0$是第一个GRU cell的隐藏层在每个batch中的初始值,$h_0$可以不提供,系统会默认生成一个符合维度要求的全零tensor。
- 输入维度:
- input,当参数batch_first为False时,input的维度为(seq_size, batch_size, feature_size),当batch_first为True时,input的维度为(batch_size, seq_size, feature_size);
- $h_0$的维度为(num_layers×GRU方向数,batch_size,hidden_size);
2.2 输出
- GRU模型的输出为output和$h_n$,其中output为模型输出值,$h_n$为模型最后一个GRU cell的隐藏层状态;
- 输出维度:
- output的维度为(seq_size,batch_size,hidden_size×GRU方向数)
- $h_n$的维度为(num_layers×GRU方向数,batch_size,hidden_size)
- GRU方向数:当bidirectional为True时,GRU方向数为2,当bidirectional为False时,GRU方向数为1;
- seq_size为输入的单个序列长度,对于NLP代表了每个句子的长度;
三、对应关系
GRU设置参数中input_size与输入序列input的最后一个维度即feature_size对应;
GRU设置参数中hidden_size与输入$h_0$、输出output和$h_n$的最后一个维度对应;
GRU设置参数中num_layers与输入$h_0$、输出$h_n$的第一个维度中num_layers对应;
GRU设置参数中bidirectional与输入$h_0$、输出output和$h_n$的第一个维度中GRU方向数对应;
GRU输入和输出中seq_size、batch_size不变,但是最后一个维度由输入的feature_size变为输出的hidden_size×GRU方向数;