Transformer详解(4)-前馈层残差连接层归一化

1、前馈层

前馈层接收自注意力层的输出作为输入。
在这里插入图片描述

from torch import nn
import torch.nn.functional as Fclass FeedForward(nn.Module):def __init__(self, d_model=512, d_ff=2048, dropout=0.1):super().__init__()# d_ff 默认设置为2048self.linear_1 = nn.Linear(d_model, d_ff)self.dropout = nn.Dropout(dropout)self.linear_2 = nn.Linear(d_ff, d_model)def forward(self, x):x = self.linear_1(x)x = self.dropout(F.relu(x))x = self.linear_2(x)return x

2、残差连接

残差连接和层归一化技术,进一步提升训练的稳定性。
残差连接主要是指使用一条直连通道直接将对应子层的输入连接到输出,避免在优化过程中因网络过深而产生潜在的梯度消失问题。
x = f(x) + x

3、层归一化

为了使每一层的输入/输出稳定在一个合理的范围内,层归一化技术被进一步引入每个Transformer快中:
LN(x) = a (x-u)/c + b
其中u和c分别表示均值和方差,用于将数据平移缩放到均值为0、方差为1的标准分布,a和b是可学习的参数。层归一化技术可以有效地缓解优化过程中潜在的不稳定、收敛速度慢等问题。

import torch
from torch import nnclass Norm(nn.Module):def __init__(self, d_model, eps=1e-6):super(Norm, self).__init__()self.size = d_model# 层归一化包含两个可以学习的参数self.alpha = nn.Parameter(torch.ones(self.size))self.bias = nn.Parameter(torch.zeros(self.size))self.eps = epsdef forward(self, x):norm = self.alpha * (x - x.mean(dim=-1, keepdim=True)) / (x.std(dim=-1, keepdim=True) + self.eps) + self.biasreturn norm

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

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

相关文章

CentOS 7安装prometheus

说明:本文介绍如何在CentOS操作系统上安装prometheus Step1:下载安装包 访问Github仓库,下载对应版本的prometheus安装包 https://github.com/prometheus/prometheus/releases 操作系统的版本信息,可通过下面这两个命令查看&am…

C\C++语言中求由字符串构建的字符数组长度及所占字节数代码

【知识点】 在 C\C 语言中,由字符串构建的字符数组,以不可见字符 \0 作为结尾。\0 是字符串结束标志,不计入串长,但要占内存空间。 例如,若由字符串构建的字符数组为 s,则命令 strlen(s) 可得字符数组长度…

【UE Slate】 虚幻引擎Slate开发快速入门

目录 0 引言1 Slate框架1.0 控件布局1.1 SWidget1.1.1 SWidget的主要作用1.1.2 SWidget的关键方法1.1.3 使用SWidget创建自定义控件1.1.4 结论 1.2 SCompoundWidget1.2.1 SCompoundWidget的主要作用1.2.2 SCompoundWidget的使用示例1.2.3 SCompoundWidget的关系1.2.4 总结 1.3 …

Linux 磁盘管理命令tune2fs mkisofs cfdisk sfdisk parted

文章目录 3.Linux 磁盘管理命令3.26 tune2fs:文件系统调整案例练习 3.27 mkisofs:建立ISO9660 映象文件案例练习 3.28 cfdisk:磁盘分区案例练习 3.29 sfdisk:硬盘分区工具程序案例练习 3.30 parted:磁盘分区工具案例练习 3.Linux 磁盘管理命令 3.26 tune2fs:文件系统调整 作用…

Python语法篇

文章目录 数据类型字符串整数浮点数列表元组字典 条件语句if语句while语句 函数类文件异常JSON库unittest Python中非常重视缩进,这点与Java很不一样,需要注意 冒号在python里很重要 数据类型 字符串 单引号,双引号,三引号都可…

2024经济管理、社会科学与教育国际会议(ICEMSSE 2024)

2024经济管理、社会科学与教育国际会议(ICEMSSE 2024) 会议简介 2024年国际经济管理、社会科学和教育会议(ICEMSSE 2024)专注于经济、社会发展和教育。会议旨在为专家、学者和社会人士提供一个交流平台。通过讨论科学研究成果和前沿技术,我…

如何解包 Python 恶意可执行文件

使用 Python 编写的程序通常以源码的形式发布,也可以将所有依赖都打包到一个可执行文件中。那么如何解包 Python 恶意可执行文件呢? 打包 打包与加壳不同,打包 Python 程序的目的是创建一个可以在操作系统上独立运行的可执行文件。使用例如 …

【Qt】深入探索Qt事件处理:从基础到高级自定义:QEvent

文章目录 前言:1. 事件的介绍2. 事件的处理2.1. 示例1: 重写鼠标进入和鼠标离开事件2.2. 示例2:当鼠标点击时,获取对应的坐标值;2.3. 鼠标释放事件2.4. 鼠标双击事件2.5. 鼠标移动事件2.6. 鼠标滚轮的滚动事件 3. 按键…

初学C语言100题:经典例题节选(源码分享)

1.打印Hello World! #include <stdio.h>int main() {printf("hello world\n");//使用printf库函数 注意引用头文件return 0; } 2.输入半径 计算圆的面积 int main() {float r, s;//定义变量scanf("%f", &r);//输入半径s 3.14 * r * r;// 圆的…

H3CNE-8-ARP工作原理

ARP&#xff1a;Address Resolution Protocol 通过目的IP地址请求对方的MAC地址的过程。 数据链路层在进行数据封装时&#xff0c;需要目的MAC地址。 arp -a 查看 arp -d * 清空 主机A发送一个数据包给主机C之前&#xff0c;首先要获取C的MAC地址 数据封装

【C++】c++入门(下 )

c入门 1.内联函数1.1 概念1.2 特性 2.auto关键字(C11)2.1 简介2.2 auto的使用2.3 auto不能推导的场景2.4 typedef取别名也能产生和auto的效果&#xff0c;为什么不使用&#xff1f; 3.基于范围的for循环(C11)3.1 9.1 范围for的语法3.2 范围for的使用条件 4.指针空值nullptr(C11…

.DFS.

DFS 全称为Depth First Search&#xff0c;中文称为深度优先搜索。 这是一种用于遍历或搜索树或图的算法&#xff0c;其思想是: 沿着每一条可能的路径一个节点一个节点地往下搜索&#xff0c; 直到路径的终点&#xff0c;然后再回溯&#xff0c;直到所有路径搜索完为止。 DFS俗…

隐私政策第三方sdk描述模板

​1、使用SDK名称&#xff1a;高德地图SDK ​收集个人信息类型&#xff1a;获取用户的位置信息&#xff08;准确度会有所不同&#xff09;&#xff0c;这些技术包括 IP 地址、GPS 以及能够提供相关信息的WLAN&#xff08;如Wi-Fi&#xff09;接入点、蓝牙和基站、传感器信息等…

面向对象编程的魅力与实战:以坦克飞机大战为例

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、面向对象编程的引言 二、理解面向对象编程与面向过程编程的差异 三、创建类与对象&…

Host头攻击-使用反向代理服务器或负载均衡器来传递路由信息

反向代理服务器的作用 安全性&#xff1a;反向代理服务器位于Web服务器之前&#xff0c;可以隐藏实际Web服务器的身份和地址&#xff0c;从而增加安全性。它还可以对客户端请求进行过滤和检查&#xff0c;以防止潜在的攻击。负载均衡&#xff1a;反向代理服务器可以将客户端请…

select函数(Unix系统)

select函数&#xff08;Unix系统&#xff09; 一、函数格式二、参数及返回值2.1 struct fd_set 结构体2.1 struct timeval 结构体2.3 函数参数2.4 返回值 三、用法举例3.1 监控终端输入内容 一、函数格式 #include <sys/time.h>#include <sys/types.h>#include <…

Linux查看某个用户使用总内存脚本

在之前记录过Valgrind的安装与使用 有时想要测试某个linux用户使用的总内存是否在增长&#xff0c;可以通过下面的python代码每隔一段时间做个统计 import psutil import time# 指定要监视的用户名 target_user "yifan.wang" # 替换为要监视的用户名# 获取初始内…

flink ExecutionEnvironment

在Apache Flink中&#xff0c;获取执行环境可以通过调用ExecutionEnvironment类的静态方法来实现。以下是获取不同类型环境的示例代码&#xff1a; 本地环境&#xff08;用于单机测试&#xff09;: ExecutionEnvironment env ExecutionEnvironment.createLocalEnvironment()…

yolov8+ROS+ubuntu18.04——学习记录

参考文献 1.Ubuntu配置Yolov8环境并训练自己的数据集 ROS实时运行 2.https://juejin.cn/post/7313979467965874214 前提&#xff1a; 1.CUDA和Anaconda&#xff0c;PyTorch 2.python>3.8 一、创建激活环境&#xff0c;安装依赖 1.创建虚拟环境 conda create -n yol…

Java项目:基于SSM框架实现的企业人事管理系统单位人事管理系统【ssm+B/S架构+源码+数据库+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的企业人事管理系统单位人事管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观…