基于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 np

def _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时值会急剧下降到负无穷。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开源大模型框架概览3.1 TensorFlow与Keras3.1.1 TensorFlow简介

1.背景介绍 3.1 TensorFlow与Keras TensorFlow是Google Brain team在2015年发布的一个开源库,支持large-scale machine learning and deep neural networks。Keras是Python neural network library,它最初是由Franois Chollet开发的,并于20…

传统IT运维方式在数字化转型和业务扩展背景下面临哪些挑战?

近年来,IT部门的运维人员面对不断涌现的新兴技术和架构转型的要求,如企业上云中台互联网、分布式、容器化、双中心双活,大数据、人工智能的应用等等。随着传统企业把更多的业务向数字化转型,传统的IT运维方式在数字化转型和业务扩…

小程序抓包详细教程

小程序抓包详细教程 前言:关于小程序抓包一直想写出一个比较详细的教程 实验设备: ​ 微信: https://windows.weixin.qq.com/?langzh_CN ​ Proxifier:https://www.proxifier.com/download/ (需要挂梯子访问下载) ​ burpsuite&#xff…

电源滤波器怎么选怎么用1

电源滤波器怎么选怎么用 第一步第二步第三步第四步 很多人不懂得选型,都是买一大堆在现场直接挨个挨个测试,哪一个是通过了就算哪一个。是的我也是这样子搞得。那如何选择最优、最经济、最实用、最有效的滤波器呢?选择电源滤波器的过程有这么…

BioPorto胰高血糖素样肽-1抗体(GLP-1)

丹麦BioPorto Diadnostics公司致力于提供世界领先的GLP-1抗体。基于结合GLP-1位点的不同,他们筛选出了不同的抗GLP-1抗体。有的抗体可以同时结合GLP-1的活性形式和非活性形式,有的专门结合生物活性形式的GLP-1。在开发和检测GLP-1相关治疗的过程中&#…

初探Flask:Pycharm社区版创建Flask项目

文章目录 一、创建工程二、引入Flask库1.使用命令行安装Flask2.在PyCharm中安装Flask 三、创建Flask框架基本文件四、运行项目 本文将带您一步步创建一个简单的Flask项目,包括设置Python环境、安装Flask库以及创建基本的项目结构。 一、创建工程 首先,确…

Kibana的使用

在学习elasticsearch时,可以使用Kibana自带的开发工具,来提高效率, 浏览器打开Kibana,在左侧菜单栏中找到Dev Tools 该工具提供代码提示和代码格式化功能,非常有用,

SSMP整合案例第七步 前后端业务异常消息统一处理

异常消息处理 我们当前的增删改查基本完成 我们当前的情况是在理想状态下完成的 但是实际开发中我们要抛出异常 业务在进行处理的时候 数据格式就是这样 前端拿到的信息我们应该去处理 前端如何去处理得去斟酌 即使前端出现了异常 我们也要让返回的异常信息让前端成功读…

SpringBoot——整合Servlet的三大组件:监听器(Listener)

目录 监听器(Listener) 项目总结 MyRequestListener自定义监听器 WelcomController控制器 SpringbootListenerApplication启动类 在开发SpringBoot项目时,开发人员经常需要对HTTP请求进行拦截和处理,以实现诸如身份验证、授…

室内外无缝定位技术:连接虚拟与现实的新桥梁

随着科技的快速发展,人们对于位置信息的精确度和实时性要求日益提高。在这样一个背景下,室内外无缝定位技术应运而生,成为连接虚拟与现实世界的关键桥梁。它不仅为人们提供了更加便捷、高效的生活体验,还推动了物联网、智能制造等…

家用厨房安全新篇章:煤气安全阀结构与校验知识普及

在家用厨房中,煤气作为主要的烹饪能源,其安全性至关重要。 煤气安全阀作为防止煤气泄露的关键设备,其结构特点、作用解析、定期校验的重要性以及泄露风险的防范等方面,都是我们必须深入了解和掌握的知识。 首先,我们…

Java1.8 vue版家政服务系统成品源码 家政管家系统源码 家政月嫂系统源码 家政保洁系统源码 在线派单,师傅入驻全套商业源码

Java1.8 vue版家政服务系统成品源码 家政管家系统源码 家政月嫂系统源码 家政保洁系统源码 在线派单,师傅入驻全套商业源码 一、系统定义 家政上门服务系统是一种利用互联网技术,将家政服务需求与专业的家政服务人员进行高效匹配的平台。它允许用户通过…

leetcode第263题:丑数

丑数的因子只能是2,3,5。但是可能有多个2&#xff0c;多个3&#xff0c;多个5.因此需要循环地除以2、3、5. public class Solution {public bool IsUgly(int n) {if (n < 0) {return false;}int[] factors {2, 3, 5};for ( int i0;i<3;i) {int factorfactors[i];while …

ClickHouse如何整合数据源:MySQL、HDFS...

一、ClickHouse数据源 ClickHouse 作为一个强大的列式数据库管理系统&#xff0c;支持多种数据源&#xff0c;使得用户能够方便地将数据导入 ClickHouse 进行存储和分析。以下是常见的 ClickHouse 数据源&#xff1a; 外部数据源 HDFS&#xff1a; 支持从 Hadoop 分布式文件系…

音视频开发15 FFmpeg FLV封装格式分析

FLV(Flash Video)简介 FLV(Flash Video)是Adobe公司推出的⼀种流媒体格式&#xff0c;由于其封装后的⾳视频⽂件体积⼩、封装简单等特点&#xff0c;⾮常适合于互联⽹上使⽤。⽬前主流的视频⽹站基本都⽀持FLV。采⽤ FLV格式封装的⽂件后缀为.flv。 FLV封装格式的组成 FLV封装…

长三角Ai行业盛会:2024南京人工智能展会(南京智博会)

在长三角地区&#xff0c;南京这座古老而现代的都市&#xff0c;近年来在人工智能产业发展方面取得了令人瞩目的成绩。作为一座拥有深厚历史底蕴和独特文化魅力的城市&#xff0c;南京在科技创新领域同样展现出非凡的活力与实力。特别是在人工智能领域&#xff0c;南京的崛起已…

Spring Cloud:构建高可用分布式系统的利器

摘要&#xff1a;本文将介绍Spring Cloud&#xff0c;一个基于Spring Boot的开源微服务架构工具集。我们将探讨Spring Cloud的核心组件、特性以及如何使用Spring Cloud构建高可用、分布式系统。通过本文&#xff0c;读者将了解到Spring Cloud在实现微服务架构中的应用和优势。 …

STM8单片机变频器设计

变频调速技术是现代电力传动技术的重要发展方向,而作为变频调速系统的核心—变频器的性能也越来越成为调速性能优劣的决定因素,除了变频器本身制造工艺的“先天”条件外,对变频器采用什么样的控制方式也是非常重要的。随着电力电子技术、微电子技术、计算机网络等高新技术的…

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

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

华致酒行一季度业绩好转:毛利率持续下滑,销售人员去年减少578人

《港湾商业观察》李镭 在公布年报和一季报前后&#xff0c;华致酒行&#xff08;300755.SZ&#xff09;举行了3次投资者交流活动&#xff0c;可见外界对公司业绩的关注程度。 虽然一季度业绩好于年报&#xff0c;但整个2024年是否能延续这一不错态势&#xff0c;恐怕也并不乐…