介绍Pytorch-LSTM中的输入输出参数
小编写这篇文章的主要目的,主要是给大家做一个介绍,介绍关于Pytorch-LSTM是如何去输出参数,有哪一些步骤呢?下面小编就以代码和图片给大家做出一个介绍。

Pytorch-LSTM输入数据(以batch_first=True,双层双向为例)
假如输入数据信息如下:
输入维度为28,batch_first=True,双层双向(num_layers=2,bidirectional=True)
下面是对应的代码:
num_layers=2
bidirectional_set=True
bidirectional=2 if bidirectional_set else 1
input_size=28
hidden_size=4
lstm_seq=nn.LSTM(input_size,hidden_size,num_layers=num_layers,bidirectional=bidirectional_set,batch_first=True)
lstm_input=Variable(torch.randn(10,3,28))
h_init=Variable(torch.randn(num_layers*bidirectional,lstm_input.size(0),hidden_size))
c_init=Variable(torch.randn(num_layers*bidirectional,lstm_input.size(0),hidden_size))
out,(h,c)=lstm_seq(lstm_input,(h_init,c_init))
print(lstm_seq.weight_ih_l0.shape)
print(lstm_seq.weight_hh_l0.shape)
print(out.shape,h.shape,c.shape)
Pytorch-LSTM函数参数解释图解
以下是LSTM函数的部分参数和含义解释:
- input_size-输入的特征维度
- hidden_size-隐状态的特征维度
- num_layers-层数
- bias-如果为False,那么LSTM将不会使用偏置,默认为True
- batch_first-如果为True,那么输入和输出Tensor的形状为(batch,seq_len,input_size)
- dropout-如果非零的话,将会在RNN的输出上加个dropout,最后一层除外
- bidirectional-如果为True,将会变成一个双向RNN,默认为False
以下是LSTM函数的输入和输出维度:
- 输入维度为(seq_len, batch, input_size)(如果batch_first为True,则输入形状为(batch,seq_len,input_size))
- 输出维度为(seq_len, batch, hidden_size*num_directions)(num_direction指的是如果是普通LSTM,则为1;Bi-LSTM则为2)
接下来我们用图片对LSTM的函数参数进行详细解释:

在这张图片中:
- input_size对应图1中xi,绿色节点对应图2中的绿色节点,绿色节点的长度等于input_size(一般是每个字/单词的向量表示)
- hidden_size对应图2中黄色节点的数量
- num_layers对应图2中黄色节点的层数
以上就是小编为大家总结的资料,希望可以为大家带来更多的帮助。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7386.html
