Pytorch实现LSTM以及参数随手笔记

import torch
import torch.nn as nn
class rnn(nn.Module):
	super(rnn).__init__()
	def __init__(self,input_dim,output_dim,num_layer,num_class):
		self.layer1 = nn.LSTM(input_dim,output_dim,num_layer)
		self.layer2 = nn.Linear(output_dim,num_class)
	def forward(self,input):
		output,_=self.layer1(input)#LSTM的输出包括隐藏层计算结果以及隐藏层状态,因此=左边必须是两个值
		output = self.layer2(output)
		return output
if __name__=="__main__":
	#实例化
	encoder = rnn(input_dim = 10, output_dim = 5, num_layer = 2)
	#创建输入
	input = torch.randn(20,15,100)#参数分别代表sequence_length,batch_size,word_embedding
	#计算
	output=encoder(input)
	print(output)#输出结果的维度为sequence_length,batch_size,num_class(最后一层神经网络的输出层维度)

个人疑惑小结:
numlayer代表LSTM的堆叠层数,该值为2时,则将第一层LSTM的输出作为第二层LSTM 的输入继续计算,而bidirectional是决定每一层LSTM是否是双向的。

在实例化LSTM时需要指定模型内部结构的固有的输入层维度,隐藏层维度等参数,而在运行模型时需要指定句子长度,batch_size等参数

你可能感兴趣的:(经验总结)