基于RNN和Transformer的词级语言建模 代码分析 _generate_square_subsequent_mask

基于RNN和Transformer的词级语言建模 代码分析 _generate_square_subsequent_mask

flyfish

Word-level Language Modeling using RNN and Transformer

word_language_model

PyTorch 提供的 word_language_model 示例展示了如何使用循环神经网络RNN(GRU或LSTM)和 Transformer 模型进行词级语言建模 。默认情况下,训练使用Wikitext-2数据集,generate.py可以使用训练好的模型来生成新文本。

源码地址
https://github.com/pytorch/examples/tree/main/word_language_model

文件:model.py

import torch
import matplotlib.pyplot as plt
import numpy as npdef _generate_square_subsequent_mask(sz):return torch.log(torch.tril(torch.ones(sz, sz)))# 设置矩阵大小
sz = 5
mask = _generate_square_subsequent_mask(sz)# 将 mask 转换为 numpy 数组,方便可视化
mask_np = mask.numpy()# 可视化
plt.imshow(mask_np, cmap='viridis')
plt.colorbar()
plt.title("Square Subsequent Mask")
plt.show()

可视化图示
在可视化结果中,你会看到一个下三角矩阵,其值为 0 的部分为下三角部分,值为负无穷的部分为上三角部分。图像中通常负无穷会被显示为一种不同的颜色。

这样,你可以直观地理解生成的掩码矩阵的结构和作用。这个掩码矩阵主要用于 Transformer 模型中,以确保模型在预测时只能看到当前时刻及之前的时刻信息,而不能看到未来的信息。
在这里插入图片描述
结果
运行这段代码,你会看到一个 5x5 的矩阵,其中下三角部分是 0(因为 log(1) = 0),上三角部分是负无穷(由于 log(0) 是负无穷)。

def _generate_square_subsequent_mask(sz):return torch.log(torch.tril(torch.ones(sz, sz)))
# 设置矩阵大小
sz = 5
mask = _generate_square_subsequent_mask(sz)# 打印矩阵
print(mask)

输出

tensor([[0., -inf, -inf, -inf, -inf],[0., 0., -inf, -inf, -inf],[0., 0., 0., -inf, -inf],[0., 0., 0., 0., -inf],[0., 0., 0., 0., 0.]])

在数学上,定义对数函数时,log(0) 是未定义的,但在计算中,我们处理这种情况的方式是认为 log(0) 的极限值是负无穷。因此,计算机通常会返回负无穷来表示这种情况。

在 PyTorch 中,torch.log(0) 的结果是 -inf(负无穷)。这是因为对数函数是单调递增的,并且在接近0时值会急剧下降到负无穷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/342432.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

顶顶通呼叫中心中间件-同振和顺振配置步骤(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件-同振和顺振配置步骤(mod_cti基于FreeSWITCH) 一、拨号方案配置 1、同振 win-ccadmin配置方法 1、点击拨号方案->2、在红框中输入同振->3、点击添加->4、根据图中配置,配置好了等待一分钟即可生效。 web-ccadmin配置方法 2、顺振…

关于浔川python社在全网博主原力月度排名泸州地区排名第三名的调查——浔川总社部

6月6日,浔川python社在全网博主原力月度排名泸州地区排名第三名。 引起了广大python爱好者等的不满,为什么浔川python社这么一个大的python社排名第三? 2024-06-04 21:59:52 浔川python社在全网博主原力月度排名泸州地区排名第一名。 2024-…

重复文件怎么查找并清理,试试这5个文件去重方法(新)

重复文件怎么查找并清理?日常工作中,我们使用电脑的时间长了,都会累积大量好的文件,这其中难免会出现重复文件。这些重复文件不仅占用了电脑磁盘空间,还会降低电脑性能。因此,我们必须定期对重复文件查找出…

每日两题 / 198. 打家劫舍 74. 搜索二维矩阵(LeetCode热题100)

198. 打家劫舍 - 力扣(LeetCode) dp[i]表示考虑前i 1号房屋,能获取的最大金额。对于没一间房屋都有偷与不偷两种选择 如果偷,需要从dp[i - 2]转移,因为不能偷窃相邻房屋,dp[i] dp[i - 2] nums[i] 如果…

【Linux取经路】信号的发送与保存

文章目录 一、重新理解发送信号二、信号的保存、阻塞信号的概念三、信号集操作函数3.1 sigprocmask3.2 sigpending 四、阻塞信号代码验证五、结语 一、重新理解发送信号 进程通过位图来实现对普通信号(1-31号信号)的保存,该位图保存在进程的…

【漏洞复现】I Doc View 在线文档预览 qJvqhFt.json 任意文件读取漏洞(XVE-2024-2115)

0x01 产品简介 iDocView是一个在线文档解析应用,旨在提供便捷的文件查看和编辑服务。 0x02 漏洞概述 iDocView是一个在线文档预览系统 /iew/gJvghftjson 接口处存在任意文件读取漏洞,未授权的攻击者可以利用此接口并携带默认token读取服务器敏感文件信…

面试Tip--java创建对象的四种方式

java创建对象一共有四种方式,但是我们在写代码的时候用的new 关键字偏多,像一些接口对接则是序列化创建对象偏多,今天我们来简单介绍下使用场景以及各个方式 1. 使用 new 关键字 这是最常见的创建对象的方式。 public class Example {priva…

【AIGC X UML 落地】通过多智能体实现自然语言绘制UML图

前天写了篇博文讲到用PlantUML来绘制C类图和流程图。后台有读者留言,问这步能否自动化生成,不想学习 PlantUML 语法。 我想了下,发现这事可行,确实可以做到通过自然语言的描述就能实现 UML图的绘制,昨天晚上加了个班到…

统信UOS SSH服务升级(ubuntu20)内网

服务器配置 系统信息 SSH版本 目标版本 openssh-server_8.2p1-4_arm64.deb 因为不通互联网,所以所有deb包需要手动下载(可以连接互联网的可以自动忽略手动下载deb步骤,直接apt-get install xxx 即可) 升级步骤 !!!deb下载方式…

在Jenkins 中使用 NVM 管理 Node.js 部署项目的自动化脚本

在Jenkins 中使用 NVM 管理 Node.js 部署项目的自动化脚本 人生旅途,总有人不断地走来,有人不断地离去。当新名字变成老名字,当老的名字渐渐模糊,又是一个故事的结束和另一个故事的开始。 在现代软件开发中,持续集成/持…

Windows11下Docker使用记录(五)

目录 准备1. WSL安装cuda container toolkit2. win11 Docker Desktop 设置3. WSL创建docker container并连接cuda4. container安装miniconda(可选) Docker容器可以从底层虚拟化,使我们能够在 不降级 CUDA驱动程序的情况下使用 任何版本的CU…

支付宝小众玩法 爱溜达的人不容错过

创建一个简单的程序来帮助用户管理他们的图片,例如筛选分辨率合适、尺寸适中的图片来准备上传,这是一个技术上合理且有益的方向。例如,一个Python脚本使用Pillow库来检查文件夹中图片的尺寸: from PIL import Image import os# 根…

可视化数据科学平台在信贷领域应用系列五:零代码可视化建模

信贷风控模型是金融机构风险管理的核心工具,在信贷风险管理工作中扮演着至关重要的角色。随着信贷市场的环境不断变化,信贷业务的风险日趋复杂化和隐蔽化,开发和应用准确高效的信贷风控模型显得尤为重要。信贷风险控制面临着越来越大的挑战和…

【MySQL数据库】:MySQL内外连接

目录 内外连接和多表查询的区别 内连接 外连接 左外连接 右外连接 简单案例 内外连接和多表查询的区别 在 MySQL 中,内连接是多表查询的一种方式,但多表查询包含的范围更广泛。外连接也是多表查询的一种具体形式,而多表查询是一个更…

React-生成随机数和日期格式化

生成随机数 uuid文档:https://github.com/uuidjs/uuid npm install uuid import {v4 as uuidV4} from uuid 使用: uuidV4() 日期格式化 dayjs文档:安装 | Day.js中文网 npm install dayjs import dayjs from dayjs

LCTF 2018 bestphp‘s revenge

考点:Soap原生类Session反序列化CRLF注入 <?php highlight_file(__FILE__); $b implode; call_user_func($_GET[f], $_POST); session_start(); if (isset($_GET[name])) { $_SESSION[name] $_GET[name]; } var_dump($_SESSION); $a array(reset($_…

MySQL学习——选项文件的使用

MySQL 的许多程序都可以从选项文件&#xff08;有时也被称为配置文件&#xff09;中读取启动选项。选项文件提供了一种方便的方式来指定常用的选项&#xff0c;这样你就不必每次运行程序时都在命令行上输入这些选项。 要确定一个程序是否读取选项文件&#xff0c;你可以使用 -…

vim编辑器的使用

vim编辑器 1 vim编辑器三种常见模式2 命令模式2.1 移动光标的操作2.2 对数据操作2.3 查找函数 3 底行模式3.1 不退出vim进行操作3.2 与文件进行对比 4 vim的补充知识4.1 vim的批量化注释4.2 vim窗口的非正常关闭 5 vim的配置6 配置sudoer文件 1 vim编辑器三种常见模式 我们在编…

AMD显卡和英伟达显卡哪个好?

显卡是计算机中负责处理图形和视频输出的硬件设备&#xff0c;主要分为两种类型&#xff1a;AMD的A卡和NVIDIA的N卡。那么AMD显卡和英伟达显卡哪个好&#xff1f;怎么选&#xff1f; 答&#xff1a;不能一概而论地说哪个好&#xff0c;因为它们各有优势&#xff0c;选择应基于…

【Python报错】已解决ModuleNotFoundError: No module named ‘packaging’

成功解决“ModuleNotFoundError: No module named ‘packaging’”错误的全面指南 在Python编程中&#xff0c;遇到ModuleNotFoundError: No module named packaging这样的错误&#xff0c;通常意味着你的Python环境中缺少名为packaging的模块&#xff0c;或者该模块没有被正确…