Seq2seq(encoder + decoder)
最基础的一个seq2seq模型,参见paper “Sequence to Sequence Learning with Neural Networks”
代码如下:
# coding = utf-8
# author = 'xy'
"""
model1: encoder + decoder
we use Bi-gru as our encoder, gru as decoder, no attention
"""
import numpy as np
import torch
from torch import nn
import test_helper
class Encoder(nn.Module):
""" encode document to get state_t"""
def __init__(self, input_size, hidden_size, embedding, num_layers=1, dropout=0.2):
super(Encoder, self).__init__()
self.input_size = input_size
self.hidden_size = hidden_size
self.embedding = embedding
self.num_layers = num_layers
self.dropout = dropout
self.rnn = nn.GRU(
input_size=input_size,
hidden_size=hidden_size,
num_layers=num_layers,
dropout=dropout,
bidirectional=True
)
def forward(self, src, src