当前位置: 首页 > news >正文

从AI原理到模型演进及代码实践 的学习二

参考:全面解析:从AI原理到模型演进及代码实践-CSDN博客

训练过程
Transformer仅一个Encoder模块就可以工作,可以处理信息抽取、识别、主体识别等任务,比如 BERT(Bidirectional Encoder Representations from Transformers)是只使用了Encoder,可以从给定的文本段落中找到并提取出回答问题的文本片段,目标是识别或检索信息,而不是生成新的文本序列。

实际上,只通过Encoder直接连接一个全连接层去求 f(x) 也不是不可以,但不连接其他模块性能会差很多,同时也没有办法实现并行训练(Teacher Forcing方式),所以又设计了Decoder模块,这两种模块的组合可以实现下面的场景:

  • 文本分类(仅使用Encoder模块),label=f(tokens)

  • 下一个token预测(仅使用Decoder模块),next_token=f(token)。比如给定一些词,做出下一个词的预测,而且是逐字向后推测

  • 文本翻译(Encoder+Decoder模块),中文=f(英文)


下面从观察训练过程了解Decoder的构成。
整个训练过程还是求f8d7ad3ea19561a813298e97c1fcb746.png,即输入"LL、M、with、ban、z、ang"(此时的输入相比Encoder已经包含了token之间的相互关注信息),调整参数计算出结果和"大模型、与、半臧"比较,loss收敛后结束。

第一个是在训练时词序引入了,翻译是以“大”、“大模型”、“大模型与”、“大模型与半臧”这样的顺序进行输出的,这样token之间的注意力加上词序的训练,在翻译(预测)场景会更贴合上下文场景,变得准确。

但是在技术上,引入词序会导致训练任务必须得到前一个任务的输出结果做输入进行串行,无法并行执行,所以transformer引入mask来解决这个问题,具体是把本来串行的任务,通过直接将完整的预期结果按词序做了mask覆盖,分成多个可以并行执行的任务。

mask的主要实现就是对样本输入做了右上三角形的掩码(覆盖了一个非常小的数,可以让softmax归一后趋0),在做Decoder的QKV的时候忽略了。

任务并行后,同时任务也变成了“Teacher Forcing”方式,可以让loss收敛更快。

在机器学习和深度学习领域,“loss收敛”是指损失函数(loss function)的值随着训练过程的进行逐渐减少并趋于稳定。损失函数是用来量化模型预测值与真实目标值之间差异的一个指标,训练模型的目标通常是最小化这个损失函数。

收敛的过程

  1. 初始阶段:刚开始训练时,由于模型参数是随机初始化的,所以模型对数据的预测能力较差,损失值通常较高。
  2. 下降阶段:通过反向传播算法调整模型参数,使得每次迭代后损失函数的值逐渐减小。
  3. 接近最小值:随着训练的深入,损失函数的值越来越接近一个最小值(局部或全局)。当损失值的变化幅度变得非常小,几乎不再变化时,我们说模型达到了收敛状态。
  4. 收敛状态:在理想情况下,这意味着模型已经学到了从输入到输出的最佳映射关系。然而,在实践中,完全达到理论上的最小值往往难以实现,更多的是找到一个足够好的近似解。

影响收敛的因素

  • 学习率:过高的学习率可能导致模型无法稳定地收敛;而过低的学习率则可能使训练过程极其缓慢。
  • 优化器的选择:不同的优化器(如SGD、Adam等)对于不同问题可能有不同的表现,选择合适的优化器可以加速收敛。
  • 正则化技术:L1/L2正则化、dropout等技术可以帮助防止过拟合,从而影响模型的收敛性。
  • 数据质量与数量:高质量且充足的数据有助于模型更准确地学习到数据中的模式,促进收敛。

确保模型正确收敛是训练过程中的关键步骤之一,它直接关系到最终模型性能的好坏。如果模型没有很好地收敛,可能需要调整上述提到的一些参数或策略。

 

Teacher Forcing是一种在训练序列模型(如循环神经网络RNN、长短时记忆网络LSTM或Transformer等)时使用的技术。它的主要目的是加速模型的训练过程并提高模型的稳定性。

基本概念

在序列预测任务中,模型的目标是基于输入序列生成一个输出序列。例如,在语言翻译任务中,输入是一段源语言句子,而输出是对应的目标语言句子。在训练过程中,通常的做法是让模型在每一步都预测下一个词,并使用真实的目标序列中的实际词作为下一步的输入。这就是所谓的Teacher Forcing。

具体来说,在没有使用Teacher Forcing的情况下,模型会使用其上一步预测出的词作为下一步的输入。而在使用Teacher Forcing时,无论模型上一步预测的结果是什么,都会将正确答案(即训练数据中的实际目标词)作为下一步的输入给到模型。这样做的好处是可以使得训练过程更加稳定,因为模型每次都能接收到正确的输入信息,从而有助于更快地学习到正确的模式。

优点与缺点

优点:

  • 加速收敛:由于模型总是接收正确的前序输入,因此可以更快速地学习到正确的输出。
  • 提升稳定性:减少因错误累积导致的偏差,尤其是在早期训练阶段,这有助于提高训练过程的稳定性。

缺点:

  • 暴露偏差(Exposure Bias):在训练期间,模型习惯于依赖真实的前序单词,但在推理(inference)阶段,它必须基于自己之前的预测进行操作。这种差异可能导致模型在处理未见过的数据时表现不佳。
  • 缺乏鲁棒性:长期依赖Teacher Forcing可能会使模型变得不够健壮,因为它没有机会学会如何从自身的错误中恢复。

为了解决这些问题,一些方法如Scheduled Sampling被提出,这种方法在训练过程中逐步减少Teacher Forcing的比例,使得模型能够逐渐适应在推理时遇到的情况。通过这种方式,可以在一定程度上缓解暴露偏差的问题,同时保留Teacher Forcing带来的训练效率和稳定性的优势。


 

RNN中的Teacher Forcing

在RNN中,如果没有Teacher Forcing,模型会基于它之前预测出的词来预测下一个词。这意味着如果模型在一个时间步骤上做出了错误的预测,这个错误可能会“传播”到后续的时间步骤,导致误差累积,使得loss难以收敛。例如,在你的例子中,“大”->["模型"(90%)、“小”(4%)],如果模型错误地选择了“小”,那么接下来的预测可能会越来越偏离正确路径。

  • 采用Teacher Forcing后,即使模型预测出了“小”,在下一个时间步骤中,我们仍然给模型提供正确的词(即应该跟随“大”的那个正确词),这样可以避免因为早期的错误预测而导致后续预测完全偏离轨道的问题。

Transformer中的Teacher Forcing

虽然Transformer架构不同于RNN系列模型(因为它不依赖于序列顺序进行计算,允许并行化处理),但在训练阶段,Teacher Forcing的概念同样适用。

  • 在训练过程中,尽管Transformer能够并行处理整个token序列,但为了模拟推理时的情况(即每次只能根据已有的信息预测下一个词),我们会对每个位置的token进行mask操作,隐藏未来的信息。这确保了模型在训练期间只基于前面的上下文进行预测。
  • Teacher Forcing在Transformer中的应用就是在这个masked自注意力机制的基础上,对于每个位置,除了使用真实的前序tokens作为输入外,还直接使用目标序列中的实际token来预测当前位置的输出。这与RNN中Teacher Forcing的思想是一致的:即在训练时总是提供正确的前序信息,以帮助模型学习更准确的表示。

在transformer中,完整token序列参与训练,但屏蔽每个token后面信息,形成可并行执行任务,每个token序列推测过程无视其他任务推测结果,采用训练样本值进行前序context推测下个token。

 

另外一个特别点是Decoder含有两层注意力,第一层是和Encoder一样的实现(自注意力),接受来自训练文本的真实输出,形成token的相互关注信息,第二层注意力QKV中Q来自上一个Decoder,KV并非由上一层Decoder结果计算来的,而是来自Encoder的KV结果(非同源,非自注意力),这样的设计是将来自Encoder的训练文本输入和训练真实输出(按词序mask)的相互关注都整合在一起预测被mask的值。

论文中Encoder和Decoder是可以堆叠的,即输入通过堆叠n层Encoder(论文中使用了2/4/6/8层,只有6层效果最好,但实际在只有一行训练样本场景下,n_layers=1是效果最好的)处理后在传递到n层Deocder继续处理,同时每层Deocder的KV都来自最后一层的Encoder的输出。

深度学习模型中Encoder-Decoder架构的一种实现方式,特别是在处理序列到序列(sequence-to-sequence, seq2seq)任务时。这种架构通常用于自然语言处理任务,比如机器翻译、文本摘要等。下面是对这段话的详细解释:

Encoder-Decoder架构

  • Encoder:输入序列通过堆叠的多层Encoder进行编码。每层Encoder都会对输入数据进行抽象和转换,捕捉输入的不同层次的特征表示。在你的例子中,论文尝试了不同层数的Encoder(2层、4层、6层、8层),发现6层的效果最佳。

  • Decoder:编码后的信息被传递给Decoder,Decoder同样由若干层组成(n层)。Decoder的任务是基于Encoder生成的高级特征表示来生成目标序列。

关键点解析

  1. 堆叠的层数(n_layers)

    • 在实验中,不同的Encoder和Decoder层数(如2层、4层、6层、8层)被用来测试效果。结果显示,在一般情况下,使用6层Encoder和Decoder的模型表现最好。然而,在特定场景下(例如只有一行训练样本的情况下),仅使用单层(n_layers=1)的模型反而效果最佳。这表明模型复杂度需要根据具体应用场景和数据集大小进行调整。
  2. KV来自最后一层Encoder

    • 在Decoder中,每一层都会使用“K(Key)”和“V(Value)”这两个概念,它们是从Encoder的最后一层输出得到的。这是指在注意力机制(Attention Mechanism)中,Decoder会参考Encoder最后一层产生的隐藏状态来计算注意力权重。这样做可以让Decoder更好地关注到输入序列中的重要部分,从而生成更准确的输出序列。
  3. 应用情景考虑

    • 当处理的数据集非常简单或规模很小时(如只有一个训练样本的情况),过于复杂的模型可能会导致过拟合。因此,在这样的场景下,简化模型(例如减少为单层)可以避免模型过度学习训练数据的细节,提高泛化能力。

整个训练过程如下:

1. 训练文本(输入/输出)['LLM with banzang', '大模型和半臧']的输入['LLM with banzang']进行分词和embedding

2. Encoder计算训练文本输入X的Self-AttentionScore,形成输入X的token间关注信息带入Decoder

3. 训练文本(输入/输出)['LLM with banzang', '大模型和半臧']的输出['大模型和半臧']进行分词和embedding

4. 第一层Decoder对训练文本输出X'进行右上三角形MASK遮盖操作后进行Self-AttentionScore,形成输出X'从左往右词序的token间关注信息(即只能了解过去信息,无法提前知道未来词序,因为要预测),事实上形成了训练输出长度为m()的并行任务

5. 第二层Decoder将第一层Deocder输出的结果做为输入Q,使用Encoder的KV参数,拼接训练输入和输出再次做AttentionScore

6. 预测下一个结果和训练输出对比后,反向传播调整各层参数,直到Loss收敛到预期结果。

小结一下流程:

 预测过程

相比训练过程,切换到预测模式后,原本训练的并行输入由最后一个Decoder输出取代,然后开始串行循环,直至<EOS>标记结束。就和RNN一样,逐一预测到底,例如:

LL -> LLM

LLM -> LLM with

LLM with -> LLM with ban

LLM with ban -> LLM with banz

LLM with banz -> LLM with banzang

实际上预测下一个token是按照softmax后概率挑选的,在串行循环时,选取不同概率的词会形成不同的预测分支,例如:


预测结果因概率挑选以及前馈层的非线性激活函数,将整个预测变的更加丰富,有点像基因突变,可能未来会产生艺术创造的价值,当前基于transfomer的各个模型都有会有多个预测输出分支待采用。
 输出的处理
当输入X被Encoder和Decoder*2处理完后,形成token_size*embedding_size大小的矩阵,每行代表着一个token,每列是这个token在不同维度的某个magic number,最后再经过一个全连接层(Linear Layer)
对输入矩阵做线形变化成token_size*logits_size,同时引入训练参数做拟合,再经过一个softmax归一,拟合每个token在字典表中最高概率的index,拿index还原最终token。

在深度学习中,线性层(Linear Layer),也常被称为全连接层(Fully Connected Layer)或密集层(Dense Layer),是神经网络的基本构建块之一。线性层对输入数据执行线性变换,其操作可以简单理解为矩阵乘法加上一个偏置项。

线性层的工作原理
给定一个输入向量 x,线性层通过以下公式计算输出:y=Wx+b

其中:
W 是权重矩阵,
x 是输入向量,
b 是偏置向量,
y 是输出向量。
特点与用途
线性变换:线性层的主要作用是对输入进行线性组合,它不改变输入的维度结构,但可以通过调整权重和偏置来学习输入数据中的模式。
特征映射:在线性层中,每个输出神经元都连接到所有输入神经元,这种全连接方式允许模型学习输入之间的复杂关系,并将这些关系映射到新的特征空间中。
灵活性:线性层通常与其他类型的层(如卷积层、循环层等)结合使用,以构建更复杂的模型。例如,在卷积神经网络(CNN)中,线性层经常被用作最后几层,用于将卷积层提取的特征映射到分类器或回归器的输出上。
激活函数:单独的线性层只能表示线性关系,因此通常会在其后添加非线性激活函数(如ReLU、Sigmoid、Tanh等),使得整个模型能够学习到输入数据中的非线性模式。
应用场景
分类任务:在图像分类、文本分类等任务中,线性层常用于网络的最后一层,用来产生最终的分类得分。
回归任务:在预测连续值的任务中,线性层可以直接输出预测结果。
序列建模:虽然RNN、LSTM、GRU等更适合处理序列数据,但在某些情况下,线性层也可用于处理序列数据的特定部分,比如在Transformer架构中,线性层用于计算注意力权重
总之,线性层是一个非常基础且重要的组件,几乎所有的深度学习模型都会包含至少一层线性层。它们对于将高维数据映射到低维空间或者相反的过程特别有用。

至此Transformer整个工作流程全部结束

 

相关文章:

从AI原理到模型演进及代码实践 的学习二

参考&#xff1a;全面解析&#xff1a;从AI原理到模型演进及代码实践-CSDN博客 训练过程 Transformer仅一个Encoder模块就可以工作&#xff0c;可以处理信息抽取、识别、主体识别等任务&#xff0c;比如 BERT&#xff08;Bidirectional Encoder Representations from Transfor…...

计算机组成原理(计算机系统3)--实验二:MIPS64乘法实现实验

一、实验目标&#xff1a; 实际运用WinMIPS64进行试验&#xff0c;以期更了解WinMIPS64的操作&#xff1b; 更加深入地了解MIPS程序的语法&#xff1b; 深入地了解在计算机中乘法的实现以及加法与乘法之间的关系。 二、实验内容 按照实验报告指导&#xff0c;完成相关操作…...

WPS excel使用宏编辑器合并 Sheet工作表

使用excel自带的工具合并Sheet表&#xff0c;我们会发现需要开通WPS会员才能使用合并功能&#xff1b; 那么WPS excel如何使用宏编辑器进行合并 Sheet表呢&#xff1f; 1、首先我们要看excel后缀是 .xlsx 还是 .xls &#xff1b;如果是.xlsx 那么 我们需要修改为 .xls 注…...

ASP.NET Core - 配置系统之配置添加

ASP.NET Core - 配置系统之配置添加 2. 配置添加 2. 配置添加 配置系统可以读取到配置文件中的信息&#xff0c;那必然有某个地方可以将配置文件添加到配置系统中。之前的文章中讲到 ASP.NET Core 入口文件中&#xff0c;builder(WebApplicationBuilder 对象) 中有一个 Config…...

【Redis】Redis 集群中节点之间如何通信?

【Redis】Redis 集群中节点之间如何通信&#xff1f; 一背景概述二通信协议Gossip 协议 三通信机制Gossip 消息类型(1).Ping消息(2).Pong消息(3).Meet消息(4).Fail消息 消息传播模式(1).反熵(Anti-entropy)(2).谣言传播(Rumor mongering) 四通信过程通信端口通信频率故障检测与…...

iOS - 内存对齐

1. 基本的内存对齐 // 对象内存对齐 struct objc_object {// isa 指针 8 字节对齐isa_t isa __attribute__((aligned(8))); };// 定义对齐常量 #define WORD_MASK 7UL // 字对齐掩码 #define WORD_SHIFT 3UL // 字对齐位移 #define WORD_SIZE 8 …...

RabbitMQ(四)

SpringBoot整合RabbitMQ SpringBoot整合1、生产者工程①创建module②配置POM③YAML④主启动类⑤测试程序 2、消费者工程①创建module②配置POM③YAML文件内配置&#xff1a; ④主启动类⑤监听器 3、RabbitListener注解属性对比①bindings属性②queues属性 SpringBoot整合 1、生…...

unity学习17:unity里的旋转学习,欧拉角,四元数等

目录 1 三维空间里的旋转与欧拉角&#xff0c;四元数 1.1 欧拉角比较符合直观 1.2 四元数 1.3 下面是欧拉角和四元数的一些参考文章 2 关于旋转的这些知识点 2.1 使用euler欧拉角旋转 2.2 使用quaternion四元数,w,x,y,z 2.3 使用quaternion四元数,类 Vector3.zero 这种…...

当PHP遇上区块链:一场奇妙的技术之旅

PHP 与区块链的邂逅 在技术的广袤宇宙中&#xff0c;区块链技术如同一颗耀眼的新星&#xff0c;以其去中心化、不可篡改、透明等特性&#xff0c;掀起了一场席卷全球的变革浪潮。众多开发者怀揣着对新技术的热忱与探索精神&#xff0c;纷纷投身于区块链开发的领域&#xff0c;试…...

Portainer.io安装并配置Docker远程访问及CA证书

Portainer.io安装并配置Docker远程访问及CA证书 文章目录 Portainer.io安装并配置Docker远程访问及CA证书一.安装 Portainer.io2.启动容器 二.docker API远程访问并配置CA安全认证1.配置安全(密钥)访问2.补全CA证书信息3.生成server-key.pem4.创建服务端签名请求证书文件5.创建…...

从漏洞管理到暴露管理:网络安全的新方向

在网络安全的快速发展中&#xff0c;传统的漏洞管理仍然是防御体系的基石。然而&#xff0c;面对日益复杂的威胁和不断增长的漏洞数量&#xff0c;单靠漏洞优先级评分&#xff08;如VPR&#xff09;已经无法满足现代安全需求。暴露管理这一全新的思维模式正在引领企业从被动应对…...

GraphRAG如何使用ollama提供的llm model 和Embedding model服务构建本地知识库

使用GraphRAG踩坑无数 在GraphRAG的使用过程中将需要踩的坑都踩了一遍&#xff08;不得不吐槽下&#xff0c;官方代码有很多遗留问题&#xff0c;他们自己也承认工作重心在算法的优化而不是各种模型和框架的兼容性适配性上&#xff09;&#xff0c;经过了大量的查阅各种资料以…...

HTTP/HTTPS ⑤-CA证书 || 中间人攻击 || SSL/TLS

这里是Themberfue ✨上节课我们聊到了对称加密和非对称加密&#xff0c;实际上&#xff0c;单纯地非对称加密并不能保证数据不被窃取&#xff0c;我们还需要一个更加重要的东西——证书 中间人攻击 通过非对称加密生成私钥priKey和公钥pubKey用来加密对称加密生成的密钥&…...

MYSQL学习笔记(二):基本的SELECT语句使用(基本、条件、聚合函数查询)

前言&#xff1a; 学习和使用数据库可以说是程序员必须具备能力&#xff0c;这里将更新关于MYSQL的使用讲解&#xff0c;大概应该会更新30篇&#xff0c;涵盖入门、进阶、高级(一些原理分析);这一篇是讲解SELECT语句使用&#xff0c;包括基本、条件、聚合函数查询&#xff0c;…...

云原生周刊:Prometheus 3.0 正式发布

开源项目推荐 Achilles-SDK Achilles-SDK 是一个专为构建 Kubernetes 控制器而设计的开源开发工具包。它简化了控制器的开发流程&#xff0c;提供了强大的 API 和高效的抽象层&#xff0c;使开发者能够专注于业务逻辑的实现&#xff0c;而无需处理底层复杂性。Achilles-SDK 支…...

维护数据完整性(三)

立即检查的&#xff08;IMMEDIATE&#xff09;或者延迟检查的&#xff08;DEFERRED&#xff09; 使用 SET CONSTRAINTS 语句 SET CONSTRAINTS语句可以用来在事务内部改变约束的检查时机。以下是如何使用该语句的示例&#xff1a; SET CONSTRAINTS constraint_name DEFERRED;…...

前后端分离开发心得

前后端分离开发是一种软件开发模式&#xff0c;将前端和后端的开发分离开来&#xff0c;使得前端和后端可以独立开发、测试和部署。具体来说&#xff1a; • 前端&#xff1a;负责展示数据和用户交互&#xff0c;使用 HTML、CSS、JavaScript 等技术实现用户界面和交互逻辑&…...

Redisson发布订阅学习

介绍 Redisson 的消息订阅功能遵循 Redis 的发布/订阅模式&#xff0c;该模式包括以下几个核心概念&#xff1a; 发布者&#xff08;Publisher&#xff09;&#xff1a;发送消息到特定频道的客户端。在 Redis 中&#xff0c;这通过 PUBLISH 命令实现。 订阅者&#xff08;Sub…...

【Golang/nacos】nacos配置的增删查改,以及服务注册的golang实例及分析

前言 本文分析的实例来源于nacos在github上的开源仓库 nacos配置的增删查改 先具体来看一段代码&#xff0c;我将逐步分析每一段的作用 package mainimport ("fmt""time""github.com/nacos-group/nacos-sdk-go/clients""github.com/naco…...

[手机Linux] 七,NextCloud优化设置

安装完成后在个人设置里发现很多警告&#xff0c;一一消除。 只能一条一条解决了。 关于您的设置有一些错误。 1&#xff0c;PHP 内存限制低于建议值 512 MB。 设置php配置文件&#xff1a; /usr/local/php/etc/php.ini 把里面的&#xff1a; memory_limit 128M 根据你自…...

浅谈云计算15 | 存储可靠性技术(RAID)

存储可靠性技术 一、存储可靠性需求1.1 数据完整性1.2 数据可用性1.3 故障容错性 二、传统RAID技术剖析2.1 RAID 02.2 RAID 12.3 RAID 52.4 RAID 62.5 RAID 10 三、RAID 2.0技术3.1 RAID 2.0技术原理3.1.1 两层虚拟化管理模式3.1.2 数据分布与重构 3.2 RAID 2.0技术优势3.2.1 自…...

vscode【实用插件】Material Icon Theme 美化文件图标

安装 在 vscode 插件市场的搜索 Material Icon Theme点 安装 效果...

json().get() 和 json[““] 的区别

以下是 json().get() 和 json[“”] 的区别&#xff1a; 使用方法和语法 json[“”]&#xff1a; 这是使用字典的索引操作符 [] 来访问 JSON 数据。假设 json 是一个字典&#xff0c;你可以通过 json[“key”] 的方式来获取对应 key 的值。 示例&#xff1a; python import js…...

商用车电子电气零部件电磁兼容条件和试验—目录

写在前面 本系列文章主要讲解商用车电子/电气零部件或系统的传导抗干扰、传导发射和辐射抗干扰、电场辐射发射以及静电放电等试验内容及要求,高压试验项目内容及要求。 若有相关问题,欢迎评论沟通,共同进步。(*^▽^*) 目录 商用车电子电气零部件电磁兼容条件和试验(1)—…...

【新人系列】Python 入门(二十六):常见设计模式

✍ 个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4dd; 专栏地址&#xff1a;https://blog.csdn.net/newin2020/category_12801353.html &#x1f4e3; 专栏定位&#xff1a;为 0 基础刚入门 Python 的小伙伴提供详细的讲解&#xff0c;也欢迎大佬们…...

【跟着官网学技术系列之MySQL】第7天之创建和使用数据库1

前言 在当今信息爆炸的时代&#xff0c;拥有信息检索的能力很重要。 作为一名软件工程师&#xff0c;遇到问题&#xff0c;你会怎么办&#xff1f;带着问题去搜索引擎寻找答案&#xff1f;亦或是去技术官网&#xff0c;技术社区去寻找&#xff1f; 根据个人经验&#xff0c;一…...

Spark任务提交流程

当包含在application master中的spark-driver启动后&#xff0c;会与资源调度平台交互获取其他执行器资源&#xff0c;并通过反向注册通知对应的node节点启动执行容器。此外&#xff0c;还会根据程序的执行规划生成两个非常重要的东西&#xff0c;一个是根据spark任务执行计划生…...

使用python+pytest+requests完成自动化接口测试(包括html报告的生成和日志记录以及层级的封装(包括调用Json文件))

一、API的选择 我们进行接口测试需要API文档和系统&#xff0c;我们选择JSONPlaceholder免费API&#xff0c;因为它是一个非常适合进行接口测试、API 测试和学习的工具。它免费、易于使用、无需认证&#xff0c;能够快速帮助开发者模拟常见的接口操作&#xff08;增、删、改、…...

Docker的入门

一、安装Docker 本教程参考官网文档&#xff0c;链接如下: CentOS | Docker Docs 这个教程是基于你的虚拟机已经弄好了&#xff08;虚拟机用的CentOS&#xff09;&#xff0c;并且有SecureCRT或者MobaXterm等等任意一个工具 1.1 卸载旧版 如果系统中存在旧版本的Docker&a…...

机器学习:监督学习与非监督学习

监督学习是利用带有标签的数据进行训练,模型通过学习输入和输出之间的关系来进行预测。也就是说,数据集中既有输入特征,也有对应的输出标签,模型的目标是找到从输入到输出的映射关系。 而无监督学习则使用没有标签的数据进行训练,模型的任务是发现数据中的内在结构或模式…...

神经网络常见操作(卷积)输入输出

卷积 dimd的tensor可以进行torch.nn.Convnd(in_channels,out_channels),其中nd-1,d-2对于torch.nn.Convnd(in_channels,out_channels)&#xff0c;改变的是tensor的倒数n1维的大小 全连接 使用torch.nn.Linear(in_features,out_features,bias)实现YXWT b,其中X 的形状为 (ba…...

海云安开发者安全智能助手D10荣膺 “ AI标杆产品 ” 称号,首席科学家齐大伟博士入选2024年度 “ 十大杰出青年 ”

2024年12月27日&#xff0c;粤港澳大湾区AI领袖峰会在深圳成功举办&#xff0c;大会表彰了在人工智能技术创新、应用实践和产业发展等方面取得优异成绩的企业和个人&#xff0c;深圳海云安网络安全技术有限公司开发者安全智能助手D10荣膺“AI标杆产品”称号。同时&#xff0c;公…...

O2O同城系统架构与功能分析

2015工作至今&#xff0c;10年资深全栈工程师&#xff0c;CTO&#xff0c;擅长带团队、攻克各种技术难题、研发各类软件产品&#xff0c;我的代码态度&#xff1a;代码虐我千百遍&#xff0c;我待代码如初恋&#xff0c;我的工作态度&#xff1a;极致&#xff0c;责任&#xff…...

C#,入门教程(27)——应用程序(Application)的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(26)——数据的基本概念与使用方法https://blog.csdn.net/beijinghorn/article/details/124952589 一、什么是应用程序 Application&#xff1f; 应用程序是编程的结果。一般把代码经过编译&#xff08;等&#xff09;过程&#…...

计算机网络(四)——网络层

目录 一、功能 二、IP数据报分片 三、DHCP动态主机配置协议 四、网络地址转换&#xff08;NAT&#xff09;技术 五、无分类编址CIDR 六、ARP地址解析协议 七、ICMP网际控制报文协议 八、IPv4和IPv6的区别 九、IPv4向IPv6的两种过渡技术——双栈协议和隧道技术 十、路由…...

VSCode的配置与使用(C/C++)

从0开始教你在vscode调试一个C文件 一.首先是配置你的编译环境&#xff0c;添加到环境变量&#xff08;默认你是全新的电脑&#xff0c;没有安装vs2019之类的&#xff09; 原因&#xff1a;因为相比于vs2019&#xff0c;vscode只是个代码编辑器&#xff0c;相当于一个彩色的、…...

《机器学习》——TF-IDF(关键词提取)

文章目录 TF-IDF简介TF-IDF应用场景TF-IDF模型模型参数主要参数 TF-IDF实例实例步骤导入数据和模块处理数据处理文章开头和分卷处理将各卷内容存储到数据帧jieba分词和去停用词处理 计算 TF-IDF 并找出核心关键词 TF-IDF简介 TF - IDF&#xff08;Term Frequency - Inverse Do…...

金仓Kingbase客户端KStudio报OOM:Java heap space socketTimeout

找到Kingbase\ES\V8\KESRealPro\V008R006C006B0021\ClientTools\guitools\KStudio\KStudio.ini 修改JVM参数&#xff1a; 默认值&#xff1a; -Xms512m -Xmx1024m 改为&#xff1a; -Xms1024m -Xmx2048m -XX:MaxPermSize512m SQL查询报错&#xff1a;An I/O error occurred …...

XML在线格式化 - 加菲工具

XML在线格式化 打开网站 加菲工具 选择“XML 在线格式化” 输入XML&#xff0c;点击左上角的“格式化”按钮 得到格式化后的结果...

thinkphp8.0 likeadmin 框架添加API 文档自动生成工具 apidoc支持

Apidoc 是一个便捷的 API 文档自动生成工具&#xff0c;它能帮助开发者快速生成和管理 API 文档。以下是 Apidoc 的主要特点和功能&#xff1a; 主要特点 开箱即用 安装后&#xff0c;无需繁杂配置&#xff0c;直接按照文档编写注释&#xff0c;即可自动生成 API 文档。 轻松编…...

计算机网络 (44)电子邮件

一、概述 电子邮件&#xff08;Electronic Mail&#xff0c;简称E-mail&#xff09;是因特网上最早流行的应用之一&#xff0c;并且至今仍然是因特网上最重要、最实用的应用之一。它利用计算机技术和互联网&#xff0c;实现了信息的快速、便捷传递。与传统的邮政系统相比&#…...

【Idea启动项目报错NegativeArraySizeException】

项目场景&#xff1a; Idea启动项目报错&#xff08;打包不报错&#xff09;&#xff0c;项目在服务器部署运行没有问题&#xff0c;尝试了重启idea、重启电脑、maven clean/install 都不行 maven-resources-production:sample: java.lang.NegativeArraySizeException: -5833…...

长安“战疫”网络安全公益赛的一些随想

起因 今年刚进入大学&#xff0c;开始带校队&#xff0c;为了培养校队新成员&#xff0c;也就一直计划着和当地的一些高校合作交流&#xff0c;但是由于种种原因一直被搁置下来。正巧学校信息中心和四叶草有一个培训项目的合作&#xff0c;学校的网安协会也算是沾了光成为了培…...

【网络编程】基础知识

目录 网络发展史 局域网和广域网 局域网&#xff08;LAN&#xff09; 广域网&#xff08;Wan&#xff09; 光猫 路由器 网线 设备通信的要素 IP地址 基本概念 地址划分 特殊地址&#xff08;后续编程使用&#xff09; IP地址转换 字节序 网络模型 网络的体系结…...

RK3568平台(音频篇)lineout无声调试

一.声音硬件框架 硬件HP_MUTE已强制拉低。 二.设备树配置 es8388_sound: es8388-sound {status = "okay";compatible = "rockchip,multicodecs-card";rockchip,card-name = "rockchip-es8388";hp-det-gpio = <&gpio1 RK_PD2 GPIO_ACT…...

计算机组成原理(计算机系统3)--实验三:取指和指令译码设计

一、 实验目标&#xff1a; 设计完成一个连续取指令并进行指令译码的电路&#xff0c;从而掌握设计简单数据通路的基本方法。 二、实验内容 本实验完成&#xff1a;1&#xff09;首先完成一个译码器&#xff1b;2&#xff09;接着实现一个寄存器文件&#xff1b;3&#xff0…...

紫光无人机AI飞控平台介绍

随着无人机技术的迅猛发展&#xff0c;无人机飞控平台的智能化需求不断提升。紫光无人机AI飞控平台作为一款创新型产品&#xff0c;为用户提供了从飞行控制到任务管理的一站式解决方案&#xff0c;尤其在AI实时识别和事件分析方面具有显著优势。本文将介绍平台的核心功能、技术…...

基于EMQX+MQTT+ESP32+Openharmony的开发实例

EMQX介绍 EMQ X 是基于 Erlang/OTP 平台开发的 MQTT 消息服务器&#xff0c;是开源社区中最流行的 MQTT 消息服务器。EMQX 是开源百万级分布式 MQTT 消息服务器&#xff08;MQTT Messaging Broker&#xff09;&#xff0c;用于支持各种接入标准 MQTT 协议的设备&#xff0c;实…...

npm发布组件(vue3+webpack)

1.初始化Vue项目 vue create my-app 2.本地运行 npm run serve 3.新增目录和文件 1. src/package/index.js 2. src/package/wlz-btn/index.vue 3. src/package/wlz-input/index.vue // src\package\index.js import WlzBtn from "./wlz-btn"; import WlzInput …...

kubuntu24.04配置vmware17.5.1

背景 个人主机的最后一次折腾吧。 丝滑上网前提&#xff1a;singbox实践https://blog.csdn.net/qq_43652666/article/details/145190110 vmware 博通官网下载vmware workstation pro 17.5.1版本&#xff0c;注意一个新注册的账号只能下载一个win版本的vmware和一个linux版本…...