第N6周:seq2seq翻译实战-Pytorch复现

一、课题背景和开发环境

📌第N6周:seq2seq翻译实战-Pytorch复现📌

  • Python 3.8.12
  • numpy==1.21.5 -> 1.24.3
  • pytorch==1.8.1+cu111

📌本周任务:📌

  • 结合训练中N5周的内容理解本文代码

二、代码

由于本人在第N5周已实现过基本代码,这次就只重写我自己代码和 @K同学啊|接辅导、项目定制 提供的代码中有差异的部分。

1. 解码器

class DecoderRNN(nn.Module):
    # output_size为输出语言包含的所有单词数
    def __init__(self, hidden_size, output_size):
        super(DecoderRNN, self).__init__()
        self.hidden_size = hidden_size
        self.output_size = output_size
        self.embedding = nn.Embedding(self.output_size, self.hidden_size)
        self.gru = nn.GRU(self.hidden_size, self.hidden_size)
        self.out = nn.Linear(self.hidden_size, self.output_size) # 把hidden_size个特征转换成输出语言的词汇个数
        self.softmax = nn.LogSoftmax(dim=1)
    
    # x为每步输入,hidden为上一步结果,encoder_outputs编码的状态矩阵计算的值是各词出现的概率
    def forward(self, x, hidden):
        output         = self.embedding(x).view(1, 1, -1)
        output         = F.relu(output)
        output, hidden = self.gru(output, hidden)
        output         = self.softmax(self.out(output[0]))
        return output, hidden
    
    def initHidden(self):
        result = torch.zeros(1, 1, self.hidden_size, device=device)
        return result

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值