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

server/2025/1/25 2:38:58/

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 = 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.ppmy.cn/server/161186.html

相关文章

【Uniapp-Vue3】图片lazy-load懒加载

图片懒加载是指当预览到某张图片的时候才发送请求获取该图片。 在没有开启懒加载的时候&#xff0c;所有的图片都会一次性请求完毕。 下面我们开启懒加载&#xff1a; <image lazy-load></image> 一次请求图片的数量减少了很多&#xff0c;只有当我们浏览到新的图…

grafana+prometheus监控linux指标

先查看linux架构 [rootnode-0006 node_exporter-1.6.1.linux-amd64]# uname -m aarch64 我服务器是ARM 架构 所以是下载适用于 ARM64 的 Node Exporter&#xff1a; 新建一个文件夹 进入 wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node…

Go语言学习 day20

golang遍历map是有序还是无序&#xff0c;为什么&#xff1f; 无序&#xff0c;因为go的map基于哈希表&#xff0c;可以实现快速插入和查找&#xff0c;不保证顺序。会根据key的哈希值来决定存放kv对的哈希桶的索引&#xff0c;对key的哈希值的计算没有固定顺序。 定义一个局…

Qt信号与槽底层实现原理

在Qt中,信号与槽是实现对象间通信的核心机制, 类似于观察者模式。当某个事件发生后,比如按钮被点击,就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,将想要处理的信号和自己的一个函数(称为槽…

Git 的基本概念和常用使用

Git介绍 Git是一个分布式版本控制系统&#xff0c;用于对项目进行版本管理和协作开发。下面是Git的基本概念和使用方式的解释&#xff1a; 仓库&#xff08;Repository&#xff09;&#xff1a;仓库是用来存储项目文件和历史版本的地方。可以有本地仓库和远程仓库&#xff0c;…

Ansible fetch模块详解:轻松从远程主机抓取文件

在自动化运维的过程中&#xff0c;我们经常需要从远程主机下载文件到本地&#xff0c;以便进行分析或备份。Ansible的fetch模块正是为了满足这一需求而设计的&#xff0c;它可以帮助我们轻松地从远程主机获取文件&#xff0c;并将其保存到本地指定的位置。在这篇文章中&#xf…

如何使用 Flask-Caching 提高性能?

在 Flask 中&#xff0c;使用 Flask-Caching 可以显著提高应用的性能&#xff0c;尤其是对于计算密集型操作、数据库查询或外部 API 调用。Flask-Caching 通过存储数据的副本减少重复计算&#xff0c;从而加快响应速度。 1. 安装 Flask-Caching 首先&#xff0c;安装 Flask-Ca…

华为小米vivo向上,苹果荣耀OPPO向下

日前&#xff0c;Counterpoint发布的手机销量月度报告显示&#xff0c;中国智能手机销量在2024年第四季度同比下降3.2%&#xff0c;成为2024年唯一出现同比下滑的季度。而对于各大智能手机品牌来说&#xff0c;他们的市场份额和格局也在悄然发生变化。 华为逆势向上 在2024年第…