0基础跟德姆(dom)一起学AI 自然语言处理19-输出部分实现

1 输出部分介绍

  • 输出部分包含:
    • 线性层
    • softmax层

2 线性层的作用

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

3 softmax层的作用

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

3.1 线性层和softmax层的代码分析

复制代码
# 解码器类 Generator 实现思路分析
# init函数 (self, d_model, vocab_size)
    # 定义线性层self.project
# forward函数 (self, x)
    # 数据 F.log_softmax(self.project(x), dim=-1)

class Generator(nn.Module):
    def __init__(self, d_model, vocab_size):
        # 参数d_model 线性层输入特征尺寸大小
        # 参数vocab_size 线层输出尺寸大小
        super(Generator, self).__init__()
        # 定义线性层
        self.project = nn.Linear(d_model, vocab_size)

    def forward(self, x):
        # 数据经过线性层 最后一个维度归一化 log方式
        x = F.log_softmax(self.project(x), dim=-1)
        return x
  • nn.Linear演示:

    m = nn.Linear(20, 30)
    input = torch.randn(128, 20)
    output = m(input)
    print(output.size())
    torch.Size([128, 30])

  • 函数调用
复制代码
if __name__ == '__main__':

    # 实例化output层对象
    d_model = 512
    vocab_size = 1000
    my_generator = Generator(d_model, vocab_size )

    # 准备模型数据
    x = torch.randn(2, 4, 512)

    # 数据经过out层
    gen_result = my_generator(x)
    print('gen_result--->', gen_result.shape, '\n', gen_result)
  • 输出效果
复制代码
gen_result---> torch.Size([2, 4, 1000]) 
 tensor([[[-6.5949, -7.0295, -6.5928,  ..., -7.4317, -7.5488, -6.4871],
         [-7.0481, -6.2352, -7.2797,  ..., -6.1491, -6.1621, -7.1798],
         [-8.1724, -7.0675, -8.2814,  ..., -6.0033, -7.1100, -7.6844],
         [-6.2466, -6.6074, -6.1852,  ..., -6.8373, -7.6600, -6.8578]],

        [[-7.7598, -7.4174, -6.2134,  ..., -7.8000, -6.9862, -6.9261],
         [-6.4790, -7.5458, -6.2342,  ..., -6.8340, -6.6827, -7.0287],
         [-7.2524, -7.2598, -7.0600,  ..., -7.5680, -6.9492, -6.7689],
         [-6.6260, -6.1928, -6.7045,  ..., -6.6323, -7.9005, -7.5397]]],
       grad_fn=<LogSoftmaxBackward0>)
相关推荐
小白快快跑哦几秒前
python-字符串全解(六):正则表达式-位置断言
python·正则表达式·位置断言
梦帮科技5 分钟前
可证伪性工程测评与生产部署红蓝对抗:压力测试、长尾鲁棒性与全生命周期安全质检守卫
人工智能·深度学习·神经网络·安全·机器学习·自然语言处理·压力测试
蜗牛互联网7 分钟前
Gemini 4 Argon的1M输出窗口与长程Agent工程边界
java·人工智能·后端
dtsola7 分钟前
一个人怎么指挥一支 AI 队伍
人工智能·程序员·ai创业·独立开发者·openclaw·一人公司·小遥claw
坤盾科技10 分钟前
用坤擎智能体搭一套企业级 AI 中台
人工智能·大模型·企业数字化·ai智能体·坤擎智能体
月光船幽幽16 分钟前
拓扑实验三组协同验证方案
python·算法
johnsong18 分钟前
幽灵协议:当AI推荐死去的SaaS,编码Agent控制层正在形成
大数据·人工智能
这张生成的图像能检测吗20 分钟前
(论文速读)DefectDiffu:基于一致性建模的少样本工业缺陷图像生成
人工智能·深度学习·计算机视觉·异常检测·少样本学习·扩散生成
智鸟科技GemeOpen开发者智能设备25 分钟前
MQTT智能插座GSPM1B2 · 开发者实战指南
java·开发语言·python·物联网
Thinker QAQ26 分钟前
并发编程(七):volatile——从语言规则到 CPU
java·python·go·并发编程·volatile·memory model