当前位置: 首页 > news >正文

NLP:Transformer输出部分

本文目录:

  • 一、输出部分介绍
    • (一)输出层的核心组成
    • (二)可选层
  • 二、代码实现
    • (一)输出层构建
    • (二)nn.linear演示
    • (三)函数调用
    • (四)运行结果

前言:前文讲解了Transformer的解码器,本篇文章讲解Transformer的输出部分。

一、输出部分介绍

Transformer模型的输出层部分是其架构中的关键组件,负责将解码器(或编码器)的隐藏状态转换为最终的预测结果(如分类概率、词表分布等)。

(一)输出层的核心组成

在这里插入图片描述

(二)可选层

在这里插入图片描述

二、代码实现

(一)输出层构建

# 解码器类 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 = 512vocab_size = 1000my_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>)

今日分享到此结束。

http://www.dtcms.com/a/322504.html

相关文章:

  • DigitalProductId解密算法php调试版piddebug.php
  • Day02 员工管理,分类管理
  • 【线性代数】其他
  • 【Redis7.x】docker配置主从+sentinel监控遇到的问题与解决
  • 【LeetCode 热题 100】(六)矩阵
  • 解决本地连接服务器ollama的错误
  • 网站站长如何借助php推送示例提交网站内容加速百度收录?
  • 【26】C#实战篇—— 多个线程函数对同一个 Excel 文件进行写操作引起的文件冲突问题,解决方法
  • 代码随想录day60图论10
  • 使用 Ansys Discovery 进行动态设计和分析
  • Mac屏幕取色不准?探究原理和换算规则
  • Linux文件系统基石:透彻理解inode及其核心作用
  • LeetCode111~130题解
  • ABP VNext + Akka.NET:高并发处理与分布式计算
  • 【AGI】GPT-5:博士级AI助手的全面进化与协作智能时代的黎明
  • 如何输出一篇高质量的版本测试策略
  • WebGIS视角下基孔肯雅热流行风险地区分类实战解析
  • jupyter服务器创建账户加映射对外账户地址
  • stm32项目(24)——基于STM32的汽车CAN通信系统
  • React中实现完整的登录鉴权与权限控制系统
  • (一)React复习小满(userImmer/userMemo/useContext/userCallback/userRef)
  • 需求评审需要哪些角色参与
  • 嵌入式 - Linux软件编程
  • Web文件上传:本地与云存储实战
  • day 36_2025-08-09
  • 如何在 Ubuntu 24.04 LTS Linux 上安装 Azure Data Studio
  • C# 通过第三方库INIFileParser管理INI配置文件
  • Golang的本地缓存freecache
  • Linux中Docker redis介绍以及应用
  • Kubernetes(K8s)不同行业的典型应用场景及价值分析 原创