LSTM的输入参数和输出参数
4.batch_first:默认为False,在制作数据集和数据集载入的时候,有个参数叫batch_size,也就是一次输入几个数据,lstm的输入默认将batch_size放在第二维,当为True的时候,则将batch_size放在第一维。1.input_size:输入的特征维度,一般来说就是字向量的维度,比如如果用bert(base)的话,那么输入的维度input_size=768。3.num
LSTM一共有7个输入参数,只挑选重要的理解
1.input_size:输入的特征维度,一般来说就是字向量的维度,比如如果用bert(base)的话,那么输入的维度input_size=768。
2.hidden_size:隐藏层的维度,这里我的理解是输出的特征维度。比如将bert的output[0]的768维的转变为512维度,这512就是hidden_size。
3.num_layers:很好理解,就是LSTM 堆叠的层数,默认值为1,设置为2的时候,第一层的输出是第二层的输入。
4.batch_first:默认为False,在制作数据集和数据集载入的时候,有个参数叫batch_size,也就是一次输入几个数据,lstm的输入默认将batch_size放在第二维,当为True的时候,则将batch_size放在第一维。
5.dropout:神经网络防止过拟合的参数。
6.bidirectional:默认为False,当设置为True的时候,是bi-lstm。
import torch
import torch.nn as nn # 神经网络模块
self.embedding = nn.Embedding(vocab_size, embedding_dim)
self.rnn = nn.LSTM(embedding_dim, hidden_dim // 2,
bidirectional=use_bidirectional,
dropout=0.5 if use_dropout else 0.)
input = torch.randn(5, 3, 10)
#seq_len=5 , batch_size=3 , dim =10
seq_len可以理解为句子的长度,batch_size是一次进多少个数据,也就是一次进3条数据。dim就是向量维度了,lstm的数据喂入应该是一个time_step输入batch_size大小的单个数据也就是1*3。如果不理解把torch.randn(5,3,10)画出来就理解了。
lstm的输出:output,hn,cn。
hn理解为当前时刻,LSTM层的输出结果,输入短记忆。
而cn是记忆单元中的值,属于长记忆。(不经常用)
output是hn的output则是包括当前时刻以及之前时刻所有hn的输出值,也就是如果有很多个time_step,那么hn就是output[-1]。
output的size=(seq_len,batch_size,dim)
更多推荐



所有评论(0)