Lstm模型配置
nn.LSTM(self.input_size, self.hidden_size, self.num_layers, batch_first=True)
其中input_size:表示每个时间步特征的长度,
- 单变量,input_size = 1,
- 在NLP中,input_size = 300,表示词向量的长度为300;
hidden_size:表示隐含层的神经元数目
num_layers:表示lstm层数
batch_first: 表示第一维度是否为batch.
模型输入数据格式
当batch_first = True时,输入数据格式要做成[N,L,input_size]的格式,下面进行详细的介绍:
- N:样本数量
- L:表示时间长度,例如,用前12个时间步预测第13个时间步,则L=12
- input_size表示每个时间点的特征数目
案例:自然语言处理的文本分类任务中,输入一个句子,我爱北京天安门。
- Step1:使用jieba分词,分为{我,爱,北京,天安门},总共有4个词,在词向量中查找每个单词的embedded表示都是300维;
- Step2:则输入表示为[1,4,300],因为只有一个样本,所以N=1;有4个单词,所有L=4;每个单词的维度为300,则input_size = 300;
Lstm输出
输出包含:两大部分output, (h_n, c_n),我们主要都是使用output,而他的输出和batch_first参数有关系,当batch_first=True时,output输出为:
(N,L,D * H_{out}),其中:
- N 样本数量
- L:序列长度
- D:方向数量,Hout 隐含层神经元数目