(9)在Pytorch中使用LSTM
学习Pytorch的RNN使用时最好去官方文档看一下API是如何使用的:(http://pytorch.org/docs/nn.html#recurrent-layers)。一个需要注意的地方是在Pytorch中RNN的输入input的shape的三维分别是 (seq_len, batch, input_size),隐藏层h_0的shape三维分别是 (num_layers * num_directions, batch, hidden_size),输出output的shape三维分别是 (seq_len, batch, hidden_size * num_directions),这与之前使用的Tensorflow和Keras将batch作为第一维有点不太一样。
import torch
import torch.autograd as autograd
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F
def prepare_sequence(seq, to_ix):
idxs = [to_ix[w] for w in seq]
tensor = torch.LongTensor(idxs)
return autograd.Variable(tensor)
training_data = [
("The dog ate the apple".split(), ["DET", "NN", "V",