版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiangcheng001/article/details/82597467
lstm = nn.LSTM(input_size = input_size,
hidden_size = hidden_size,
num_layers = num_layers,
batch_first = True,
dropout = dropout,
bidirectional = True)
初始化定义lstm的模块,hidden = (autograd.Variable(torch.randn(1, 1, 3)), autograd.Variable(torch.randn((1, 1, 3))))
隐藏层是一个元组形式,其第一个元素是LSTM的隐藏层输出,另一个元素维护了隐藏层的状态。lstm_out, self.hidden = lstm(
embeds.view(len(sentence), 1, -1), hidden)
输入inputs和隐藏层hidden的数据view
将一个tensor按照变换size,注意变换前后数据是不变的,变化的只是维度,如果每个维度上是-1,则代表是根据其他维度推导而来的;如果维度不一致,比如原来是3*4,变化为(7,-1)是会报错的。实现word embedding是通过一个函数来实现的:nn.Embedding
embeds = nn.Embedding(2, 5)
这里的2表示有2个词,5表示5维度,其实也就是一个2x5的矩阵,所以如果你有1000个词,每个词希望是100维,你就可以这样建立一个word embedding,nn.Embedding(1000, 100)