Transfomer学习记录:输出层

75 阅读1分钟

线性层的作⽤:

  • 通过对上⼀步的线性变化得到指定维度的输出, 也就是转换维度的作⽤

softmax层的作⽤:

  • 使最后⼀维的向量中的数字缩放到0-1的概率值域内, 并满⾜他们的和为1

代码实现:

import torch.nn.functional as F
class Generator(nn.Module):
    def __init__(self, d_model, vocab_size):
    #初始化函数的输⼊参数有两个, d_model代表词嵌⼊维度, vocab_size代表词表⼤⼩
        super(Generator, self).__init__()
        这个线性层的参数有两个, 就是初始化函数传进来的两个参数: d_model,vocab_size
        self.project = nn.Linear(d_model, vocab_size)
    def forward(self, x):
    #前向逻辑函数中输⼊是上⼀层的输出张量x
    # 在函数中, ⾸先使⽤上⼀步得到的self.project对x进⾏线性变化,
    # 然后使⽤F中已经实现的log_softmax进⾏的softmax处理.
    # 在这⾥之所以使⽤log_softmax是因为和我们这个pytorch版本的损失函数实现有关,在其他版本中将修复.
    # log_softmax就是对softmax的结果⼜取了对数, 因为对数函数是单调递增函数,
    # 因此对最终我们取最⼤的概率值没有影响. 最后返回结果即可.
        return F.log_softmax(self.project(x), dim=-1)