transformer系列1---Attention Is All You Need全文详细翻译

news2024/9/28 19:23:33

论文链接:Attention Is All You Need.

代码链接:Transformer.

Transformer

  • 0 Abstract 摘要
  • 1 Introduction 引言
  • 2 background 背景
  • 3 Model Architecture模型架构
    • 3.2 Attention注意力
      • 3.2.1 Scaled Dot-Product Attention缩放点积注意力
      • 3.2.2 Multi-Head Attention多头注意力
      • 3.2.3 Applications of Attention in our Model 模型中注意力的应用
    • 3.3 Position-wise Feed-Forward Networks逐点前馈网络
    • 3.4 Embeddings and Softmax 嵌入和softmax
    • 3.5 Positional Encoding位置编码
  • 4 Why Self-Attention为什么使用自注意力
  • 5 Training训练
    • 5.1 Training Data and Batching 训练数据和批处理
    • 5.2 Hardware and Schedule 硬件和训练周期
    • 5.3 Optimizer优化器
    • 5.4 Regularization正则化
  • 6 Results结果
    • 6.1 Machine Translation机器翻译
    • 6.2 Model Variations模型变量
    • 6.3 English Constituency Parsing英文构成分析
  • 7 Conclusion结论

0 Abstract 摘要

  主流的序列转换模型基于复杂的循环或卷积神经网络,包括编码器和解码器。性能最佳的模型还会通过注意机制连接编码器和解码器。我们提出了一种新的简单网络架构,Transformer,仅基于注意机制,完全不需要循环和卷积。在两个机器翻译任务上的实验表明,这些模型在质量上更优越,同时更易并行化,训练时间显著减少。我们的模型在WMT 2014英德翻译任务上达到了28.4 BLEU,相比现有最佳结果(包括集成模型),提高了2 BLEU以上。在WMT 2014英法翻译任务上,我们的模型在使用八个GPU训练了3.5天的情况下,取得了新的单模型BLEU得分的SOTA,达到41.8,训练成本仅为文献中最佳模型的一小部分。Transformer在其他任务上也具有很好的泛化能力,无论是使用大量或者有限的训练数据情况下,都可以将其应用于英语成分句法分析。

1 Introduction 引言

  递归神经网络(RNN)、长短期记忆(LSTM)和门控递归神经网络(gated RNN)已经成为序列建模和转换问题(如语言建模和机器翻译)中的最先进方法。此后,许多工作一直在推动递归语言模型和编码器-解码器架构的发展边界。
  递归模型通常将计算因子分解到输入和输出序列的符号位置上。将位置与计算时间步骤对齐,它们生成一系列隐藏状态ht,作为前一个隐藏状态ht−1和位置t的输入的函数。这种固有的顺序性质阻碍了在训练样本的并行化,这在较长的序列长度中变得至关重要,因为内存限制了跨样本的批处理。最近的工作通过分解技巧和条件计算在计算效率上取得了显著改进,同时在后者的情况下也提高了模型性能。然而,顺序计算的基本约束仍然存在。
注意机制已成为各种任务中序列建模和转换模型的重要组成部分,允许对输入或输出序列中的依赖关系进行建模,而不考虑它们之间的距离。然而大部分情况下,这种注意机制通常与递归网络一起使用。
  在这项工作中,我们提出了Transformer,这是一种新的模型架构,它不使用递归,而是完全依赖于注意机制来建立输入和输出之间的全局依赖关系。Transformer可以实现更多的并行化,并且在使用8个P100 GPU,仅经过12小时的训练后,就能够达到新的翻译质量的最先进水平。

2 background 背景

  减少顺序计算的目标也是Extended Neural GPU、ByteNet和ConvS2S的基础,它们都使用卷积神经网络作为基本构建块,为所有输入和输出位置并行计算隐藏特征。在这些模型中,将两个任意位置输入或输出的信号相关联所需的操作数量,随着位置之间的距离增加而增加,对于ConvS2S是线性增长,对于ByteNet是对数增长。这使得学习远距离位置之间的依赖关系更加困难。在Transformer中,操作数量减少为常数,尽管平均注意加权降低了有效分辨率,但我们可以通过在第3.2节中描述的多头注意力机制来抵消这种影响。
  自注意力,有时称为内部注意力,是一种关联单个序列的不同位置的注意机制,用于计算序列的表示。自注意力已成功应用于各种任务,包括阅读理解、抽象摘要、文本蕴含和学习任务无关的句子表示。
  端到端记忆网络基于一种循环注意机制,而不是序列对齐的循环,并且在简单语言问答和语言建模任务上表现良好。
  然而,Transformer是第一个完全依靠自注意力计算其输入和输出表示,而不使用序列对齐的RNN或卷积的转导模型。在接下来的章节中,我们将描述Transformer,解释自注意力的动机,并讨论它相对于其他模型的优势。

3 Model Architecture模型架构

  大多数效果好的神经序列转换模型都具有编码器-解码器结构。在这里,编码器将符号表示的输入序列(x1, …, xn)映射到连续表示的序列z = (z1, …, zn)。给定z,解码器随后逐个元素生成一个输出序列(y1, …, ym)的符号。在每一步中,模型是自回归的,也就是在生成下一个符号时,使用先前生成的符号作为额外的输入。
在这里插入图片描述
  Transformer整体架构使用堆叠的自注意力和逐点全连接层作为编码器和解码器,分别显示在图1的左半部分和右半部分。

3.2 Attention注意力

  注意力函数可以被描述为将 Query 与一组键值对(Key-Value)映射到输出的函数,其中 Query、Key、Value和输出都是向量。输出是值的加权和,其中赋予每个值的权重是通过Query与Key的兼容性函数(compatibility function)计算得出的。
在这里插入图片描述

3.2.1 Scaled Dot-Product Attention缩放点积注意力

  本文的attention称为缩放点积注意力(Scaled Dot-Product Attention),输入包括维度为 dk的queries 和 keys,维度为dv的values,计算每一个query和所有key的点积,除以在这里插入图片描述,然后利用softmax 函数计算value的注意力权重。
实际上,本文同时对一组Query计算注意力函数,将其打包成矩阵Q 。Key和Value也打包到矩阵K和V中。我们计算输出矩阵如下:
在这里插入图片描述

3.2.2 Multi-Head Attention多头注意力

  与使用dmodel维度的key、value和query执行单个attention函数相比,通过不同的可学习的线性投影将query、key和value投影h次到dk、dk和dv维度,可以获得更好的效果。然后,在这些投影版本的query、key和value上并行执行attention函数,得到dv维度的输出值。这些值被concat起来,再次进行投影,得到最终的值,如图2所示。
  多头注意力允许模型在不同的位置同时关注不同表示子空间的信息,使用单个注意力头时,平均化会抑制这种效果。
在这里插入图片描述

投影参数矩阵在这里插入图片描述在这里插入图片描述
  本文使用h = 8个并行的注意力层或头。对于每个头,使用dk = dv = dmodel/h = 64。由于每个头的维度减小,总的计算成本与具有完整维度的单头注意力相似。

3.2.3 Applications of Attention in our Model 模型中注意力的应用

  Transformer 在三个不同的方式中使用多头注意力:
  • 交叉注意力:在“编码器-解码器注意力”层中,query来自前一个解码器层,而内存的key和value来自编码器的输出。这使得解码器中的每个位置都可以关注输入序列中的所有位置。这模仿了序列到序列模型中的典型编码器-解码器注意力机制]。
  • 自注意力。在自注意力层中,所有的query,key和value都来自同一个地方,即编码器中前一层的输出。编码器中的每个位置都可以关注编码器前一层的所有位置。
  • 掩码自注意力:解码器中的自注意力层允许解码器中的每个位置关注到解码器中的所有位置,包括该位置及之前的位置。我们需要防止解码器中的左向信息流,以保持自回归属性。我们通过在缩放的点积注意力中屏蔽(设置为-∞)所有与非法连接对应的输入中的值来实现这一点,详见图2.

3.3 Position-wise Feed-Forward Networks逐点前馈网络

  除了注意力子层之外,我们编码器和解码器中的每个层都包含一个全连接的前馈网络,该网络分别相同地应用于每个位置。该网络由两个线性变换和一个ReLU激活函数组成。
在这里插入图片描述
  虽然线性变换在不同位置上是相同的,但它们在不同层之间使用不同的参数。另一种描述方式是使用核大小为1的两个卷积操作。
  输入和输出的维度为dmodel = 512,内层的维度为dff = 2048。

3.4 Embeddings and Softmax 嵌入和softmax

  与其他序列转换模型类似,本文使用可学习的embedding将输入token和输出token转换为维度为dmodel的向量。本文还使用常用的可学习的线性变换和softmax函数将解码器输出转换为预测的下一个token的概率。本文的模型中,在两个embedding层和预softmax线性变换之间共享相同的权重矩阵。在嵌入层中,本文将这些权重乘以在这里插入图片描述
在这里插入图片描述

3.5 Positional Encoding位置编码

  由于本文的模型不包含循环和卷积,为了使模型能够利用序列的顺序信息,必须向序列中的注入一些关于相对或绝对位置信息的token。为此,本文在编码器和解码器组底部的输入embedding中添加“位置编码”。位置编码的维度与输入embedding的维度相同,因此可以将两者直接相加。位置编码可以是可学习的也可以是固定的。
  本文使用不同频率的正弦和余弦函数:
在这里插入图片描述
其中 pos是位置, i是维度。也就是说,位置编码的每个维度对应一个正弦波。波长从 2π到 10000⋅2π形成一个几何级数。我们选择这个函数是因为我们假设它可以让模型容易学习到相对位置的注意力,因为对于任何固定的偏移k, PEpos+k可以表示为 PEpos的线性函数。 此外,我们在编码器和解码器堆中对embedding和位置编码和应用了dropout,对于基本模型,Pdrop=0.1。
我们还尝试使用可学习的位置embedding,发现两个版本的结果几乎相同。我们选择了正弦版本,因为它可能使模型能够推断出比训练过程中遇到的序列长度更长的序列。

4 Why Self-Attention为什么使用自注意力

  在本节中,我们将自注意力层与递归层和卷积层进行比较,这些递归层和卷积层常用于将一个可变长度的符号表示序列 (x1, …, xn) 映射到另一个等长序列 (z1, …, zn) ,其中 xi, zi ∈ Rd,例如典型的序列转换编码器或解码器中的隐藏层。使用自注意力主要有三个原因。

  1. 每层的总计算复杂度。
  2. 可以并行计算的计算量,以序列操作的最小数量来衡量。
  3. 网络中长程依赖之间的路径长度。在许多序列转换任务中,学习长程依赖是一个关键问题。影响学习此类依赖的一个关键因素是前向和后向信号在网络中需要穿越的路径长度。在输入和输出序列的任意位置之间的这些路径越短,学习长程依赖就越容易。因此,我们还比较了由不同类型层组成的网络中,任意两个输入和输出位置之间的最大路径长度。
    如表1所示,自注意力层用一个常数数量的序列操作连接所有位置,而递归层则需要 O(n) 个序列操作。在计算复杂度方面,当序列的长度n小于特征维度d时,自注意力层比递归层更快,在机器翻译最先进的模型中常常是这样的,比如word-piece和byte-pair。为了提高处理非常长序列时的计算性能,自注意力可以限制为只考虑输入序列中以各自输出位置为中心的大小为r的邻域。这将增加最大路径长度为O(n/r)。
    一个卷积层的卷积核宽度k < n不能连接所有输入和输出位置对。要实现这一点,需要使用O(n/k)个卷积层(对于连续的卷积核)或者O(logk(n))个卷积层(对于空洞卷积)来增加网络中任意两个位置之间的最长路径长度。卷积层通常比循环层更昂贵,因为需要乘以k。然而,可分离卷积大大降低了复杂度,为O(k · n · d + n · d · d)。然而,即使k = n,可分离卷积的复杂度仍然等于自注意力层和逐点前馈层的组合,这是我们模型采用的方法。
  4. 自注意力可以产生更可解释的模型。我们检查了模型的注意力分布,并在附录中呈现和讨论了示例。不仅个别注意力头明显学会了执行不同的任务,许多注意力头似乎还展示出句子的句法和语义结构的相关性。
    在这里插入图片描述

5 Training训练

  本节描述了我们模型的训练方案。

5.1 Training Data and Batching 训练数据和批处理

  我们使用了标准的WMT 2014英德数据集,包含大约450万个句子对。句子使用字节对编码进行编码,源-目标词汇共享约37000个标记。对于英法翻译,我们使用了规模更大的WMT 2014英法数据集,包含3600万个句子,并将标记拆分为32000个词片段。句子对按照近似的序列长度进行分批处理。每个训练批次包含一组句子对,其中大约包含25000个源标记和25000个目标标记。

5.2 Hardware and Schedule 硬件和训练周期

  我们在一台配备了8个NVIDIA P100 GPU的机器上训练我们的模型。对于使用文中的超参数的基础模型,每个训练步骤大约需要0.4秒。我们总共训练了基础模型100,000个步骤或12小时。对于我们的大模型(在表3的最后一行中描述),步骤时间为1.0秒。大模型训练了300,000个步骤(3.5天)。

5.3 Optimizer优化器

  我们使用了Adam优化器,其中β1 = 0.9,β2 = 0.98,ϵ = 10−9。我们根据以下公式在训练过程中调整学习率:
在这里插入图片描述
这对应于在前warmup_steps个训练步骤中线性增加学习率,之后按步骤数的倒数平方根成比例地减小学习率。我们使用了warmup_steps = 4000。

5.4 Regularization正则化

  在训练过程中,我们采用了三种类型的正则化方法:
在这里插入图片描述
残差丢弃:我们在每个子层的输出上使用丢弃,在将其添加到子层输入和归一化之前。此外,我们在编码器和解码器堆栈中,embedding和位置编码的和上也应用了丢弃。对于基本模型,我们使用Pdrop = 0.1的速率。
标签平滑:在训练过程中,我们采用了值为ϵls = 0.1的标签平滑。这会降低困惑度,因为模型学会更加不确定,但会提高准确性和BLEU分数。

6 Results结果

6.1 Machine Translation机器翻译

  在WMT 2014年英德翻译任务中,大的transformer模型(表2中的Transformer(big))的表现超过了之前的最佳模型(包括集成模型),BLEU分数超过2.0,实现了一个新的BLEU分数最高记录,达到28.4。该模型的配置列在表3的底部。训练使用了8个P100 GPU,耗时3.5天。即使是我们的基础模型也超过了之前发表的所有模型和集成模型,在训练成本上只是竞争模型的一小部分。
在WMT 2014年英法翻译任务中,我们的大模型取得了41.0的BLEU分数,在训练成本上不到之前最佳模型的四分之一。英法翻译的Transformer(big)模型使用了Pdrop = 0.1的dropout率,而不是0.3。
对于基础模型,我们使用了最后5个检查点的平均模型,这些检查点是以10分钟间隔写入的。对于大模型,我们取了最后20个检查点的平均值。我们使用了束搜索,束大小为4,长度惩罚参数α = 0.6。这些超参数是在开发集上进行实验后选择的。我们将推理期间的最大输出长度设置为输入长度+50,但尽可能提前终止。
  表2总结了我们的结果,并与文献中的其他架构模型比较翻译质量和训练成本。我们通过将训练时间、使用的GPU数量和每个GPU的持续单精度浮点运算能力的估计相乘,来估计训练模型使用的浮点运算次数(对于 K80, K40, M40 and P100,分别估计为2.8, 3.7, 6.0 and 9.5 TFLOPS)。

6.2 Model Variations模型变量

  为了评估Transformer不同组件的重要性,我们以不同的方式改变基础模型,并在开发集newstest2013上测试英译德翻译性能的变化。我们使用了前一节中描述的波束搜索,但没有进行检查点平均。我们在表3中呈现了这些结果。
  在表3的(A)行中,我们改变了注意力头数以及注意力key和value的维度,同时保持计算量不变,如第3.2.2节所述。尽管单头注意力比最佳设置差0.9 BLEU,但过多的注意力头数也会导致质量下降。
  在表3的(B)行中,我们观察到减小注意力key的大小dk会损害模型质量。这表明确定兼容性并不容易,而且比点积更复杂的兼容性函数可能会更有益。
  在 ©和(D)行中,更大的模型更好,并且丢弃(dropout)对于避免过拟合非常有帮助。
  在(E)行中,我们用学习得到的位置嵌入替换了我们的正弦位置编码,结果与基础模型几乎相同。

在这里插入图片描述

6.3 English Constituency Parsing英文构成分析

  为了评估Transformer是否能推广到其他任务,我们在英文构成分析上进行了实验。这个任务面临着特定的挑战:输出受到强烈的结构约束,并且比输入要长得多。此外,RNN序列到序列模型在小数据情况下无法达到最先进的结果。
  我们在华尔街日报(WSJ)的Penn Treebank上训练了一个4层Transformer,dmodel = 1024,大约有40K个训练句子。我们还在半监督设置下进行了训练,使用了来自高置信度和BerkleyParser语料库的大约17M个句子。我们在WSJ设置中使用了一个16K个标记的词汇表,在半监督设置中使用了一个32K个标记的词汇表。
  我们仅进行了少量实验来选择dropout、注意力和残差(5.4节)、学习率和束搜索大小,所有其他参数都与英德基础翻译模型保持不变。在推理过程中,我们将最大输出长度增加到输入长度+300。我们在WSJ设置和半监督设置中都使用了一个束搜索大小为21和α = 0.3。
我们在表4中的结果显示,尽管缺乏任务特定调整,我们的模型表现出色,比以前报道的所有模型都要好,除了递归神经网络语法。
  与RNN序列到序列模型相比,Transformer在仅训练40K个句子的WSJ训练集上就超过了BerkleyParser。

在这里插入图片描述

7 Conclusion结论

  本文提出了Transformer,这是第一个完全基于注意力的序列转换模型,用多头自注意力替代了编码器-解码器架构中最常用的循环层。
对于翻译任务,与基于循环层或卷积层的架构相比,Transformer的训练速度显著提高。在WMT 2014年英德翻译任务和WMT 2014年英法翻译任务中,我们实现了SOTA。在前一项任务中,我们的最佳模型甚至超过了以前报道的所有集成模型。
我们计划将Transformer扩展到涉及文本以外的输入和输出模态的问题,并研究局部、受限的注意力机制,以高效处理大量的输入和输出,如图像、音频和视频,使生成变得不那么顺序化。

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

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

相关文章

idea设置gradle

1、不选中 2、下面选specified location 指定gradle目录

IDEA 启动 java web 老项目

背景&#xff1a;一套 java web 老代码&#xff0c;使用 eclipse 工具开发。内网&#xff0c;无 eclipse 开发工具&#xff0c;只有 IDEA。 代码目录结构如下&#xff1a; demo/.settings/* demo/src/com/demo/controller/* demo/webapp/js/* demo/webapp/jsp/* demo/webapp/M…

realloc

目录 前提须知&#xff1a; 函数介绍&#xff1a; 函数原型&#xff1a; 使用realloc&#xff1a; realloc在调整内存空间的是存在两种情况/使用realloc为扩大空间的两种情况 1.是剩下的没有被分配的空间足够 2 .剩下没有被分配的空间不够了 注意事项&#xff1a; rea…

普中51-矩阵按键

矩阵按键 原理图如下&#xff1a; 行列扫描 行列扫描法检测时&#xff0c;先送一列为低电平&#xff0c;其余几列全为高电平(此时我们确 定了列数)&#xff0c;然后立即轮流检测一次各行是否有低电平&#xff0c;若检测到某一行为低电 平(这时我们又确定了行数)&#xff0c;…

巨人互动|Facebook海外户Facebook的特点优势

Facebook作为全球最大的社交媒体平台之一&#xff0c;同时也是最受欢迎的社交网站之一&#xff0c;Facebook具有许多独特的特点和优势。本文小编将说一些关于Facebook的特点及优势。 1、全球化 Facebook拥有数十亿的全球用户&#xff0c;覆盖了几乎所有国家和地区。这使得人们…

Unity用相机实现的镜子效果

首先登场 场景中的元素 mirror是镜子&#xff0c;挂着我们的脚本&#xff0c;Quad是一个面片。Camera是用来生成RenderTexture给面片的。里面的test1是我用来调试位置的球。 镜子size是大小&#xff0c;x是-2&#xff0c;为了反转一下贴图 相机直接可以禁用掉&#xff0c;用…

无需申请专线、无需改动网络,ERP/MES管理系统如何远程访问?

深圳市某模具公司作为一家以设计、制作五金模具、五金冲压、机加工件、加工经营为主的五金企业。为了实现更为高效的生产管理流程&#xff0c;引入了面向钣金/五金行业信息化建设的ERP/MES管理系统及方案&#xff0c;并将其部署在了企业总部的内网服务器。 除了总部访问需求外&…

ThreeJS入门-创建一个正方体

ThreeJs实际上是WebGL的框架&#xff0c;Three.js是在WebGL的api接口基础上&#xff0c;又进行的一层封装。相当于js和JQuery的关系&#xff0c;学习webgl需要图形学知识&#xff0c;而webgl需要通过js和glsl两种语言。如果我们不通过threejs使用webgl势必逃不过底层知识:你必须…

SSRF漏洞(利用file协议读取本地文件)

简介 当利用SSRF漏洞时&#xff0c;攻击者可以通过构造恶意请求来读取本地文件。其中一种方法是使用file协议来读取本地文件。例如&#xff0c;file:///etc/passwd是一个常见的示例&#xff0c;它用于读取Linux系统上的passwd文件。 passwd文件是Linux系统中用于存储用户账户…

Flink——Flink检查点(checkpoint)、保存点(savepoint)的区别与联系

Flink checkpoint Checkpoint是Flink实现容错机制最核心的功能&#xff0c;能够根据配置周期性地基于Stream中各个Operator的状态来生成Snapshot&#xff0c;从而将这些状态数据定期持久化存储下来&#xff0c;从而将这些状态数据定期持久化存储下来&#xff0c;当Flink程序一…

【C语言】进阶——字符串和内存函数

目录 一&#xff1a;非限制字符串函数 1.strlen &#x1f44a;模拟实现 方法1&#xff1a;计算器法 方法2.指针-指针 方法3.函数调用 2.strcpy &#x1f44a;模拟实现 3.strcat &#x1f44a;模拟实现 4.strcmp &#x1f44a;模拟实现 二&#xff1a;可限制字符串函…

Echarts 旭日图的详细配置过程

文章目录 旭日图 简介配置过程简易示例 旭日图 简介 Echarts旭日图是一种数据可视化图表类型&#xff0c;用于展示层次关系数据的分布情况。旭日图通过不同的环形区域和扇形区域来表示数据的层次和大小关系&#xff0c;从而形成一个太阳的形状&#xff0c;因此得名旭日图。 E…

WebGL 计算平行光、环境光下的漫反射光颜色

目录 光照原理 光源类型 平行光 点光源 环境光 反射类型 漫反射 漫反射光颜色 计算公式 环境反射 环境反射光颜色 表面的反射光颜色&#xff08;漫反射和环境反射同时存在时&#xff09;计算公式 平行光下的漫反射 根据光线和法线方向计算入射角θ&#xff08;以便…

Intellij IDEA 提效小技巧

快速找到Controller方法 如果你的项目里有非常多的controller&#xff0c;里面有非常多的http或者resful方法。如何快速找到这些方法呢&#xff1f;这个时候&#xff0c;ctrlaltshiftn就可以派上用场了。 比如说&#xff0c;你依稀记得入账单相关的接口&#xff0c;都有个bil…

让Pegasus天马座开发板用上OLED屏

继上篇《让Pegasus天马座开发板吃上STM8S标准库》移植完标准库之后&#xff0c;于是我又想为天马座开发板添加一块屏幕。终于在我的零件箱底下找到了沉入箱底多年的0.96OLED屏幕。 屏幕介绍 这个是128x64像素的屏幕模块&#xff0c;其使用的SSD1306的驱动IC。而目前该模组&…

软件测试为什么外包更好?权威软件测试外包公司应该具备的资质

软件测试外包公司是一家专门从事软件测试服务的企业&#xff0c;其主要任务是帮助公司或个人进行软件产品的测试工作。相比较于自行开设测试部门或雇佣全职测试人员&#xff0c;外包软件测试具有成本更低、灵活性更高的优势。同时&#xff0c;外包公司通常拥有丰富的测试经验和…

Java高级-Junit单元测试框架

单元测试框架 1.介绍2.案例、断言机制3.常见注解 1.介绍 单元测试 就是在针对最小的功能单元方法&#xff0c;编写测试代码对其正确性测试 Junit单元测试框架 可以对方法进行测试&#xff0c;是第三方公式开源出来的 优点 可以灵活的编写测试代码&#xff0c;可以针对某个…

Stable Diffusion 参数介绍及用法

大模型 CheckPoint 介绍 作用&#xff1a;定调了作图风格&#xff0c;可以理解为指挥者 安装路径&#xff1a;models/Stable-diffusion 推荐&#xff1a; AnythingV5Ink_v32Ink.safetensors cuteyukimixAdorable_midchapter2.safetensors manmaruMix_v10.safetensors counterf…

leetcode刷题笔记——位运算

C/C语言中逻辑右移和算数右移共享同一个运算符>> 如果运算数类型是unsigned则采用逻辑右移&#xff0c;而signed则采用算数右移。对于signed类型的数据&#xff0c;如果需要使用算数右移&#xff0c;或者unsigned类型的数据需要使用逻辑右移&#xff0c;都需要进行类型转…

JAVASE---认识异常

在Java中&#xff0c;将程序执行过程中发生的不正常行为称为异常。 1.算数异常 2.数组越界异常 3.空指针异常 java中不同类型的异常&#xff0c;都有与其对应的类来进行描述。 异常的体系结构 1. Throwable&#xff1a;是异常体系的顶层类&#xff0c;其派生出两个重要的子…