【AI模型学习】GPT——从v1到v3
文章目录
- GPT-1
- GPT vs BERT
- GPT-2
- GPT-3
- Ai代码
GPT-1
GPT-1(Generative Pretrained Transformer 1)是 OpenAI 在2018年发布的第一个大规模预训练生成模型。它开创了基于 Transformer 的 预训练-微调 (pretraining-finetuning) 框架,在自然语言处理(NLP)领域产生了深远影响。
1. GPT-1的架构:基于Transformer解码器
GPT-1使用了 Transformer 架构的解码器部分。与其他NLP模型(如BERT,使用编码器)不同,GPT-1采用了自回归模型,通过 逐步生成 下一个词汇来学习语言的结构。
- 自回归模型:每次生成一个新词时,模型依赖于前面已经生成的单词,这样保证了生成的连贯性。
- 解码器部分:GPT-1只使用了Transformer的解码器,因此它在生成时只能依赖于之前的文本,而不能看到未来的文本。
2. GPT-1的预训练任务:自回归语言建模
GPT-1的预训练任务是 自回归语言建模。在这个任务中,模型通过给定前文来预测下一个词。
训练过程:
- 给定一段文本,模型通过最大化每个词的条件概率来进行训练。即:
P ( x t ∣ x 1 , x 2 , . . . , x t − 1 ) P(x_t | x_1, x_2, ..., x_{t-1}) P(xt∣x1,x2,...,xt−1)
其中, x t x_t xt 是模型需要预测的下一个词,而 x 1 , x 2 , . . . , x t − 1 x_1, x_2, ..., x_{t-1} x1,x2,...,xt−1是前面已经生成的词。
3. 预训练
GPT-1在BooksCorpus数据集上进行了预训练。这个数据集包含大约 7000 本小说,总共约 1.2 亿个单词。通过这个海量数据,GPT-1学会了语法结构、语义联系以及文本的各种潜在模式。
完成预训练后,GPT-1进入了微调阶段,这时候模型开始根据任务进行调整。微调是在特定的下游任务(如文本分类、命名实体识别、问答等)上进行的。
- 在微调阶段,GPT-1依靠少量的标注数据,对已经学到的通用语言表示进行调整,以适应特定任务。
- 微调使得GPT-1能够灵活适应多种任务,只需对参数进行少量调整即可。
4. GPT-1的模型规模与训练
- 参数量:GPT-1的模型包含 1.1 亿个参数,相对于后来的GPT-2和GPT-3来说规模较小,但它仍然在当时的许多任务中展现出了强大的能力。
- 训练方法:GPT-1使用了Adam优化器和交叉熵损失函数进行训练,通过反向传播优化模型参数,使得模型能够准确预测下一个词。
GPT vs BERT
- 预训练目标:自回归 vs 遮蔽语言建模
-
GPT(自回归语言建模):
- GPT采用的是自回归语言建模(Autoregressive Language Modeling)。它的目标是通过上下文的前文(左侧词汇)来预测下一个词,生成一个接一个的词汇。因此,GPT是单向的,它只能利用已经生成的词来预测下一个词。
- 特点:适合生成任务,如文本生成、对话生成等。
-
BERT(遮蔽语言建模):
- BERT使用的则是遮蔽语言建模(Masked Language Modeling, MLM)。它在训练时会随机遮蔽输入文本中的一些单词,然后让模型根据前后文的信息预测被遮蔽的词。也就是说,BERT是双向的,可以同时考虑前文和后文的信息。
- 特点:适合理解任务,如问答、文本分类、命名实体识别(NER)等。
BERT的双向上下文使得它能够在训练时考虑到整个文本的前后关系,这让BERT能更好地理解文本的语义和句法结构。想象一下,BERT不仅能看到句子中的前文,还能同时理解后文的意义。而GPT,虽然也能理解前文的内容,但无法像BERT那样同时利用后文的信息。这个差异让BERT在处理理解类任务时表现得非常强大,而GPT则更偏向于生成任务。
2. 微调策略:
-
GPT的微调:
- GPT的微调比较简单,因为它是基于解码器的自回归模型,因此微调时更多依赖于生成任务的调整。GPT通常在文本生成、对话生成等任务上进行微调。
- GPT的微调需要依赖较多的上下文来生成连续的文本,适合那些需要逐字生成的任务。
-
BERT的微调:
- BERT的微调则更加多样化,因为它的训练本身是基于双向上下文的,微调时只需要少量的标注数据,就能快速适应任务。例如,它可以被用来进行文本分类、问答、命名实体识别等任务,而不需要像GPT那样逐步生成文本。
- 这种基于双向上下文建模的微调方式,使得BERT在各种理解任务中取得了很好的效果!
3. 在标准任务上的表现:
当BERT发布时,它迅速在多个标准任务上大幅超越了GPT-1,尤其是在理解类任务(如GLUE基准测试)中:
-
GLUE基准测试:这是一个包含多个NLP理解任务的基准测试,包括文本分类、问答、情感分析等。BERT在这个测试中的表现超越了所有之前的模型(包括GPT-1),因为它能够在任务中充分利用双向上下文,从而理解文本中的深层含义。
-
GPT-1的表现:虽然GPT-1在一些生成任务上非常强大,但在理解任务(如文本分类、问答)上,GPT-1的表现并不突出,甚至在GLUE等任务上落后于BERT。
关于解码器和编码器:
解码器和编码器使用的 mask 是不同的。这两个组件使用 mask 的方式有非常重要的差异,直接影响了模型的能力和任务的适用性。
1. 解码器的 Mask: 自回归生成的 Mask
在 GPT 系列中,解码器使用了一个特别的 mask —— 遮蔽自注意力(Masked Self-Attention)。这个 mask 的作用是确保模型在生成每个词时 只能看到当前词及其前面的词,而 不能看到未来的词。这正是自回归生成模型的特性,确保了生成过程的顺序性。
假设我们有一个长度为 T T T的输入序列,GPT 模型在生成每个词时使用的 mask 是一个 下三角矩阵,如下所示:
( 1 0 0 … 0 1 1 0 … 0 1 1 1 … 0 ⋮ ⋮ ⋮ ⋱ ⋮ 1 1 1 … 1 ) \begin{pmatrix} 1 & 0 & 0 & \dots & 0 \\ 1 & 1 & 0 & \dots & 0 \\ 1 & 1 & 1 & \dots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 1 & 1 & 1 & \dots & 1 \end{pmatrix} 111⋮1011⋮1001⋮1………⋱…000⋮1
- 1 表示这个位置是可以访问的。
- 0 表示这个位置被 遮蔽,不能被访问。
这种方式确保了生成时每个位置只能依赖它之前的位置,避免了泄漏未来的信息。
2. 编码器的 Mask: 双向上下文的 Mask
与解码器的情况不同,编码器 使用的 mask 主要是为了实现 双向上下文建模,而不需要像解码器那样遮蔽未来的信息。
BERT 和类似的编码器模型(如Transformer编码器)使用双向的上下文来理解每个词的含义。这意味着编码器必须能够同时查看前文和后文的所有信息,捕捉输入序列中的全局依赖。
同时,编码器中有一个特殊的 mask(Masking),通常用于 遮蔽一些词汇,目的是让模型在训练时学习到如何利用上下文来预测这些被遮蔽的词汇。与解码器的 mask 不同,编码器的 mask 主要作用是在训练时对输入序列进行遮蔽,以进行语言建模或序列填充。
GPT-2
在GPT-1取得一定的成功后,OpenAI的研究团队看到了一个更大的目标:通过提升模型的规模与能力,GPT-2不仅要在生成任务上更强大,还要在理解任务上挑战当时已经在理解任务中表现极为出色的 BERT。
GPT-2的设计:自回归生成模型
GPT-2继承了GPT-1的架构,基于 Transformer解码器。自回归模型意味着它通过上下文信息(主要是前文)逐步预测下一个词,逐字逐句地生成文本。每次生成时,GPT-2都会基于前面生成的词来预测下一个词。
-
训练目标:和GPT-1一样,GPT-2的预训练任务是自回归语言建模,即通过给定上下文来预测下一个词。
-
训练数据:GPT-2使用了大规模的 WebText 数据集,它包含了大量来自互联网上的文本,包括新闻文章、博客、维基百科等。这个数据集的规模比GPT-1使用的BooksCorpus大得多,达到了40GB的文本数据。
然而,事实并不如预期!
虽然GPT-2在生成任务上表现得非常强大,它能够生成流畅、自然的文本,但在理解任务(如问答、情感分析、文本分类)上,GPT-2并没有完全超越BERT。
-
BERT的优势:BERT使用的是双向上下文建模,通过遮蔽语言模型(Masked Language Modeling,MLM)训练,让模型在训练时同时看到前文和后文的上下文信息,这使得BERT能够更好地理解每个词的语义关系。BERT在问答、情感分析等理解任务上,凭借双向上下文的优势,表现得异常强大。
-
GPT-2的局限:尽管GPT-2的生成能力非常强大,但它仍然是自回归的单向生成模型,每次生成一个词时,它只能利用前文的上下文,无法像BERT那样同时看到前后的信息。这使得GPT-2在理解任务中无法像BERT那样精确捕捉句子中词与词之间的深层关系。
Zero-shot学习的突破!
Zero-shot学习是指在没有专门为特定任务进行微调的情况下,模型能够仅凭任务描述或少量示例来理解并执行任务。GPT-2通过Zero-shot学习,不仅展现了生成任务的强大能力,还能在各种理解任务上取得令人惊叹的效果。
-
任务无需微调: 在传统的预训练-微调框架中,模型需要针对每个特定任务进行微调(例如,情感分析、命名实体识别等),并且需要大量的标注数据。但在Zero-shot学习中,GPT-2无需在特定任务上进行微调,也不需要特定任务的标注数据。
-
模型的灵活性: 通过Zero-shot学习,GPT-2能够灵活应对各种自然语言处理任务。这不仅大大减少了训练成本,还能在多种任务之间轻松切换,使得GPT-2成为一个真正的“通用任务执行者”。
-
降低数据需求: Zero-shot学习的能力使得GPT-2在处理不同任务时不需要大量的标注数据,它依靠之前的无监督预训练,已经学到了丰富的语言模式。无论是文本分类、情感分析,还是问答任务,只需给定任务描述,GPT-2便能胜任。
在Zero-shot学习中,GPT-2能够通过任务描述来理解任务并生成答案。任务描述可以是自然语言的指令或问题描述,这使得GPT-2能够直接根据语言描述来执行任务,而不需要额外的标注数据。
GPT-3
GPT-3(Generative Pretrained Transformer 3)是 OpenAI 在 2020 年发布的一个超大规模预训练语言模型。它继承了 GPT-1 和 GPT-2 的架构和预训练方法,但在规模和能力上都达到了前所未有的高度。
GPT-3的规模:1750亿个参数!
GPT-3 的核心特点之一就是 超大规模!它的参数量达到了 1750亿个,是 GPT-2(15亿参数)的 100倍!这个巨大规模的模型能够理解和生成更加复杂、更加连贯的语言。
- GPT-3的规模: 1750亿个参数
- GPT-2的规模: 15亿个参数
这一规模使得 GPT-3 不仅在 生成任务 上表现出色,在 理解任务 上的能力也得到了极大的提升。规模的增加意味着 GPT-3 在处理文本时能够捕捉到更多的语言特征、上下文关系以及更复杂的推理能力。
GPT-3的训练:大数据,强计算
GPT-3 是在 大量数据 和 强大计算资源 上训练出来的。与GPT-2使用的WebText数据集不同,GPT-3的训练数据集规模更大,包含了各种公开的互联网文本资源,如书籍、文章、网站等。这个庞大的数据集为GPT-3提供了丰富的语言模式和知识,让它能够应对更多样化的任务。
GPT-3使用了一个超过45TB的文本数据,涵盖了广泛的主题和领域。这些数据的多样性帮助它在多个领域中取得良好的表现,无论是文学创作、科学讨论,还是编程代码生成,它都能够生成高质量的内容。
GPT-3的训练需要极其庞大的计算资源,通过数千个GPU进行训练,使用的计算能力堪比超大规模的超级计算机。正因为如此,GPT-3的计算能力和推理能力也远超此前的版本。
GPT-3 不仅仅是 Zero-shot 任务的佼佼者,它在 Few-shot学习 上也非常强大。Few-shot学习 是指模型在给定少量示例的情况下执行任务,而 Zero-shot学习 则是指模型直接从任务描述进行推理并执行任务。
-
GPT-3 在理解和执行任务时,能够仅通过任务描述来完成任务。例如,给定一段简单的描述:“根据下面的文本判断它是积极的还是消极的”,GPT-3可以直接根据文本生成情感分析的结果,完全不需要微调。
-
它的能力远远超过了GPT-2,因为它不仅能在生成任务上发挥出色,还能在理解任务上(如推理、问答、文本分类等)直接根据描述执行任务。
在 Zero-shot 和 Few-shot learning 上,GPT-3展示了它强大的推理能力。它能够处理各种各样的任务,如:
- 文本分类
- 情感分析
- 翻译
- 代码生成
- 问题回答
由于GPT-3的强大能力,它已经在多个领域和应用中展现了巨大的潜力。以下是一些典型的应用场景:
(1)自然语言生成
(2)问答系统
(3)编程助手
(4)翻译
(5)创意生成
Ai代码
1. Codex
Codex 是由 OpenAI 开发的程序生成模型,基于 GPT-3 架构,专门用于将自然语言转化为代码。
Codex的关键特点:
- 自然语言转代码:Codex能够理解自然语言描述并生成相应的代码。例如:“编写一个计算数字平方的函数”,Codex会生成对应的Python代码。
- 多编程语言支持:Codex支持包括 Python、JavaScript、Java、Go、Ruby 等多种编程语言。
- 代码补全与自动化编程:Codex能够根据部分输入自动补全代码,甚至可以根据需求生成整个程序,减少开发者的工作量。
- 代码翻译:Codex能够将一种语言的代码翻译成另一种编程语言,比如将Python代码转换为JavaScript。
Codex应用:
- 编程助手:通过集成到 GitHub Copilot 等工具,Codex帮助开发者自动化编程任务,提高编程效率。
- 低代码开发:Codex能够自动生成代码,帮助非专业开发者通过自然语言描述快速创建应用。
2. AlphaCode
AlphaCode 是由 DeepMind 开发的专注于 编程竞赛 的程序生成模型,旨在解决高难度编程问题,尤其是编程竞赛中的算法挑战。
AlphaCode的关键特点:
- 多样化生成方案:AlphaCode生成多个候选代码解决方案,并从中筛选出最优解。这种方法帮助它应对复杂的编程题目。
- 理解问题描述并推理:AlphaCode通过解析编程问题的自然语言描述,推理出问题的解决方案,并生成对应的代码。
- 解决高难度编程问题:专门针对像 ACM ICPC 这样的编程竞赛任务,AlphaCode能够生成高质量的解法并与人类开发者竞争。
AlphaCode应用:
- 编程竞赛:AlphaCode能够解决 编程竞赛 中的高难度问题,生成符合要求的算法解决方案。
- 自动化编程:对于复杂的编程任务,AlphaCode可以生成多个解法,提供最佳的编程解决方案。
Codex vs AlphaCode:对比总结
特征 | Codex | AlphaCode |
---|---|---|
目标任务 | 自动生成代码、代码补全、代码翻译等 | 解决编程竞赛中的复杂编程问题,模拟编程竞赛中的解题过程 |
核心技术 | 基于GPT-3,专注于自然语言生成代码 | 基于多样化生成策略,专注于解决高难度编程问题 |
编程语言支持 | 支持多种编程语言,如Python、JavaScript等 | 主要专注于解决复杂编程问题,支持多种编程语言 |
应用场景 | 编程助手、自动化开发、低代码开发平台 | 编程竞赛、自动化编程挑战 |
生成方式 | 生成高质量代码并提供代码补全 | 生成多种候选代码,选择最佳解决方案 |
相关文章:
【AI模型学习】GPT——从v1到v3
文章目录 GPT-1GPT vs BERTGPT-2GPT-3Ai代码 GPT-1 GPT-1(Generative Pretrained Transformer 1)是 OpenAI 在2018年发布的第一个大规模预训练生成模型。它开创了基于 Transformer 的 预训练-微调 (pretraining-finetuning) 框架,在自然语言…...
用Function Calling让GPT查询数据库(含示例)
在本文中,我们通过一个简单的示例,介绍了 GPT模型结合Function Calling技术查询数据库 的基本流程。 Function Calling 是OpenAI推出的一项功能,允许大模型根据用户提问,自动生成函数调用指令,并由程序端实际执行外部操…...
DHCP 服务器运行流程图
以常见的 DHCP v4 为例,其完整流程如下: 一、客户端请求 IP 地址阶段 DHCPDiscover:客户端启动后,会以广播的形式发送 DHCPDiscover 报文,目的是在网络中寻找可用的 DHCP 服务器。该报文中包含客户端的 MAC 地址等信息,以便服务器能够识别客户端。DHCPOffer:网络中的 D…...
3. 使用idea将一个git分支的部分提交记录合并到另一个git分支
目录 1. 需求: 2. 操作步骤: (1)步骤一:idea切换项目分支到test上 (2)步骤二:在log窗口筛选出dev分支的提交记录 (3)步骤三:选中需要合并的记…...
GAEA情感坐标的技术架构与系统集成
为构建 AI 情感数据层,GAEA 整合了DePIN 网络、GODHOOD ID和情感坐标系三大核心组件,有效安全地整合用户数据,确保数据处理透明、高效、去中心化。架构如下: DePIN 网络:该去中心化基础设施为安全的数据传输和存储提供…...
04.通过OpenAPI-Swagger规范让Dify玩转Agent
dify安装 cd dify cd docker cp .env.example .env docker compose up -d准备自定义工具 我自建的PowerDNS,它的swagger如下: https://github.com/PowerDNS/pdns/blob/master/docs/http-api/swagger/authoritative-api-swagger.yaml 但需要加上&#x…...
idea软件配置移动到D盘
默认idea的配置在c盘,我现在软件配置已经15G了_(ཀ」 ∠)__ 。 需要关闭idea 移动软件 若是免安装版的直接移动本地软件目录就行了, 安装版的可以使用c盘搬家软件迁移。 移动配置本地文件 原位置: C:\Users\用户\AppData\Local\JetBrains…...
本安型交换机 + TSN:煤矿智能化的关键拼图
第二十三届太原煤炭(能源)工业技术与装备展览会于4月24日在潇河国际会展中心圆满落幕。作为矿山通信领域的创新企业,光路科技(Fiberroad)携多款核心产品集中亮相,涵盖万兆TSN矿用交换机、全千兆多光电融合交…...
基于SpringBoot+PostgreSQL+ROS Java库机器人数据可视化管理系统
以下是系统设计的详细方案: 1. 系统架构 ----------------- ------------------------ --------------------- -------------------- | 用户浏览器 | ---->| 前端应用 (SPA) | ---> | Spring Boot 后端 | ---> | ROS…...
机器学习算法-支持向量机SVM
支持向量机-python实现 由于本菜鸟目前还没有学习到软间隔和核函数的处理,so,先分享的硬间隔不带核函数,也就是不涉及非线性可分转化成线性可分的逻辑,后续如果学的懂,就在本篇文章的代码中继续拓展核函数等。 先来看…...
【仿Mudou库one thread per loop式并发服务器实现】服务器边缘测试+性能测试
服务器边缘测试性能测试 1. 长连接连续请求测试2. 超时连接释放测试13. 超时连接释放测试24. 超时连接释放测试35. 数据中多条请求处理测试6. PUT大文件上传测试7. 服务器性能测试 #include "httpserver.hpp" #define WWWROOT "./wwwroot"std::string Requ…...
【Spring Boot】Maven中引入 springboot 相关依赖的方式
Maven中引入 springboot 相关依赖的方式 1. 不使用版本管理(不推荐) 如果项目中没有统一版本管理,那么每个依赖都必须显式声明 <version>。 示例: <dependency><groupId>org.springframework.boot</group…...
SpringCloud核心组件Eureka菜鸟教程
关于Spring Cloud Eureka的核心概念 Eureka 是 Netflix 开源的一款基于 REST 的服务发现工具,主要用于中间层服务器的云端负载均衡。它通过维护一个服务注册表来实现服务之间的通信1。在 Spring Cloud 中,Eureka 提供了一个高可用的服务注册与发现机制&a…...
DuckDB:现代数据分析的“SQLite“内核革命
在数据工程、数据科学快速演进的今天,一个新的名字正在快速蹿红:DuckDB。 有人称它是数据分析领域的SQLite,也有人称它为下一代轻量级OLAP引擎。 无论哪种称呼,都离不开一个事实: DuckDB 重新定义了小型数据仓库和本地…...
【计算机网络分类全解析】从局域网到广域网的工程实践
目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现案例1:局域网IP扫描案例2:VLAN配置 运行结果验证 三、性能对比测试方法论量…...
Spark 技术体系深度总结
一、核心技术架构 1. 分布式计算模型 Spark基于弹性分布式数据集(RDD,Resilient Distributed Dataset)构建核心抽象,通过分区(Partition)实现数据分布式存储,每个分区可独立进行并行计算。RDD…...
金融数据分析(Python)个人学习笔记(13):自然语言处理
一、导入库和函数 pip install wordcloud pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jieba pip install gensimimport pandas as pd import numpy as np import jieba二、载入新闻数据 sinanews pd.read_csv(my_sinanews2.csv,encodinggbk) sinanews结果&a…...
ReACT Agent 实战
1. Agent 概述 关于到底什么是 Agent,目前业界并没有一个统一的定义,比如 OpenAI 倾向于将 Agent 看作是大模型能力的延伸,而 LangChain 则侧重于 Agent 是 workflow 的编排。我们没必要去纠结定义,可以简单理解 Agent 并不是某一…...
【JavaScript】关系运算符--非数值类型、Unicode编码表
1、关系运算符--非数值类型 对于非数值进行比较时,会将其转换为数字然后再比较。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width,…...
【Pandas】pandas DataFrame rtruediv
Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于执行 DataFrame 与另一个对象(如 DataFrame、Series 或标量)的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于执行 DataFrame 与另一个对象&…...
重构数字信任基石:Java 24 网络安全特性的全维度革新与未来防御体系构建
引言:从技术迭代到安全范式的根本性跃迁 在量子计算威胁渐近、分布式系统架构复杂化、数据资产价值指数级增长的 2025 年,Java 平台迎来了自 Java 1.0 以来最具革命性的安全架构升级 ——Java 24 版本。这不仅仅是一次常规的特性更新,而是通…...
HTML倒数
前言 假设您需要一个网页打开后,自动间隔 N 秒进行一次自动刷新,且不依赖 js ,那么本文可以帮助到您,以最简单的方式实现需求。 实现代码 TIPS:借助 <meta http-equiv"refresh" content"X"&g…...
【C++】类和对象(上)
文章目录 上文链接一、类(class)1. 类的定义2. 类与结构体3. 访问限定符4. 类域 二、对象1. 实例化2. 对象大小 三、this 指针1. 什么是 this 指针2. 小练习 上文链接 【C】入门基础知识(下) 一、类(class)…...
Transformer四模型回归打包(内含NRBO-Transformer-GRU、Transformer-GRU、Transformer、GRU模型)
Transformer四模型回归打包(内含NRBO-Transformer-GRU、Transformer-GRU、Transformer、GRU模型) 目录 Transformer四模型回归打包(内含NRBO-Transformer-GRU、Transformer-GRU、Transformer、GRU模型)预测效果基本介绍程序设计参…...
多级缓存入门:Caffeine、Lua、OpenResty、Canal
之前写过——Google Guava Cache简介 本文系统学习一下多级缓存 目录 0.什么是多级缓存商品查询业务案例导入1.JVM进程缓存初识Caffeine实现JVM进程缓存2.Lua语法入门HelloWorld数据类型、变量和循环函数、条件控制3.Nginx业务编码实现多级缓存安装OpenRestyOpenResty快速入门…...
在AWS Glue中实现缓慢变化维度(SCD)的三种类型
根据缓慢变化维度(SCD)的三种核心类型(类型1、类型2、类型3),以下是基于AWS Glue的实现设计、步骤及测试用例: 一、AWS Glue实现SCD的设计与步骤 1. SCD类型1(覆盖旧值) 设计目标&…...
业务校验工具包-validate-utils介绍
validate-utils介绍 1. 概述 validate-utils是一个基于Hibernate Validator的轻量级校验框架,旨在简化和增强Java应用程序中的数据校验工作。该工具包提供了一系列常见的校验场景,帮助开发人员快速实现数据验证,提高代码的可维护性和可靠性。 2. 功能特性 2.1 集合数据量…...
参数规模:衡量大语言模型体量的标尺
大语言模型的体量差异通过参数数量呈现。业界标杆如GPT-3拥有1750亿参数,Grok-1更达到3140亿级别,而Llama系列则提供70亿至700亿参数的轻量化选择。这里的"70B"并非指训练数据量,而是模型内部结构的复杂度指标——每个参数如同微型…...
JS 中call、apply 和 bind使用方法和场景
call 方法 核心特性 立即执行函数,并显式指定 this 值和逐个传递参数。语法:func.call(thisArg, arg1, arg2, …) 使用场景 借用其他对象的方法 const person { name: "Alice" }; function greet(greeting) {console.log(${greeting}, ${t…...
ZeroGrasp:零样本形状重建助力机器人抓取
25年4月来自CMU、TRI 和 丰田子公司 Woven 的论文“ZeroGrasp: Zero-Shot Shape Reconstruction Enabled Robotic Grasping”。 机器人抓取是具身系统的核心能力。许多方法直接基于部分信息输出抓取结果,而没有对场景的几何形状进行建模,导致运动效果不…...
第2讲、Tensor高级操作与自动求导详解
1. 前言 在深度学习模型中,Tensor是最基本的运算单元。本文将深入探讨PyTorch中两个核心概念: Tensor的广播机制(Broadcasting)**自动求导(Autograd)**机制 这些知识点不仅让你更加灵活地操作数据&#…...
(MySQL)表的操作
目录 表的创建 语法 创建表的案例 查看表的结构 修改表的操作 修改表名 编辑 添加一个字段(列) 修改一个字段的类型 修改字段名 删除字段名(删除列) 删除指定的表 表的插入数据 数据库的备份和恢复 我们来学习表的操作 表的创建 语法 CREATE TABLE [if not ex…...
函数的使用
函数绑定 fn.call(obj, param1, param2) fn.apply(obj, [param1, param2]) fn.bind(obj, param1, param2)()相同点: 都是借用别人(fn)的方法,替换其中的this(第一个参数)call和apply的不同点:a…...
LLM应用于自动驾驶方向相关论文整理(大模型在自动驾驶方向的相关研究)
1、《HILM-D: Towards High-Resolution Understanding in Multimodal Large Language Models for Autonomous Driving》 2023年9月发表的大模型做自动驾驶的论文,来自香港科技大学和人华为诺亚实验室(代码开源)。 论文简介: 本文…...
Spring MVC深度解析:从原理到实战
文章目录 一、Spring MVC概述1.1 MVC设计模式1.2 Spring MVC特点 二、Spring MVC核心组件2.1 架构流程图解2.2 核心组件说明 三、环境搭建与配置3.1 Maven依赖3.2 传统XML配置 vs JavaConfig 四、控制器开发实践4.1 基础控制器示例4.2 请求映射注解 五、数据处理与绑定5.1 表单…...
Spark学习全总结
基础概念: Spark 是一个快速、通用的大数据处理引擎,支持多种计算模式,如批处理、流处理、交互式查询和机器学习等。 特点: 速度快:基于内存计算,能将数据缓存在内存中,避免频繁读写磁盘,大幅…...
pytorch写张量pt文件,libtorch读张量pt文件
直接在pytorch中,用torch.save保存的张量,可能因格式差异无法在C中加载。 以下是一个最简单的例子,展示如何在 Pytorch中保存张量到 TorchScript 模块,并在 C 中使用 LibTorch 加载。 Python 代码 (save_tensor.py) import torc…...
关于Android Studio的Gradle各项配置2
好的!你提到的这些文件是 Gradle 构建系统 和 Android 项目 中非常重要的一部分,它们各自有不同的作用,涉及项目的构建配置、Gradle 环境、系统配置等方面。接下来我会为你详细解释每个文件的作用,并提供具体的例子和注释。 1. gr…...
Android Studio中创建第一个Flutter项目
一、Flutter环境验证 创建Flutter项目之前需要验证是否有Flutter环境,如没有Flutter 环境,请参考配置Flutter开发环境 1.1、flutter doctor 验证通过会有以下提示 [√] Flutter (Channel stable, 3.29.3, on Microsoft Windows [版本 10.0.19045.573…...
Linux的例行性工作(crontab)
crontab服务 at 命令是在指定的时间只能执行一次任务, crontab 命令可以循环重复的执行定时任务,与 Windows 中的计划任务有些类似 crond 是 Linux 下用来周期地执行某种任务或等待处理某些事件的一个守护进程,在安装完成操 作系统后,默认会安装 crond …...
03 基于 STM32 的温度控制系统
前言 Protues、KeilC 设计内容:使用STM32设计一个空调温度的显示控制系统 设计要求: 1.温度显示范围为16-30摄氏度 2.按键K1实现显示温度加1,按键K2实现显示温度减1,低于16或高于30,显示数值不变 3.正常按键蜂鸣器响一…...
23种设计模式-行为型模式之备忘录模式(Java版本)
Java 备忘录模式(Memento Pattern)详解 🧠 什么是备忘录模式? 备忘录模式是一种行为型设计模式,它允许在不暴露对象实现细节的情况下,保存和恢复对象的状态。备忘录模式常常用于需要记录对象状态以便随时…...
[三分钟]web自动化测试(二):selenium自动化测试常用函数(上)
文章目录 1.元素定位1.1 cssSelector(选择器)1.2 xpath1.3小示例 2.操作测试对象2.1点击/提交对象-click()2.2 模拟按键输入-sendKeys("")2.3 清除文本内容-clear()2.4 获取文本信息-getText()2.5 获取当前页面标题-getTitle()2.6获取当前页面URL-getCurrentUrl() 3.…...
基于ruoyi-plus实现AI聊天和绘画
项目介绍 基于ruoyi-plus实现AI聊天和绘画功能,打造自己的AI平台。前后端分离,有管理后台,用户端,小程序端。支持对接openai,讯飞星火,通义灵码,deepseek等大语言模型。项目架构 管理后台-前端&…...
假设检验学习总结
目录 一、假设检验1. 两种错误2. z检验和t检验3. t检验3.1 单样本t检验3.2 配对样本t检验3.3 独立样本t检验4 方差齐性检验备注卡方检验样本容量的计算AB测试主要的两种应用场景绝对量的计算公式率的计算公式说明一、假设检验 1. 两种错误 第一类错误 原假设为真,却拒绝了原假…...
C++ 基于多设计模式下的同步异步⽇志系统-2项目实现
⽇志系统框架设计 1.⽇志等级模块:对输出⽇志的等级进⾏划分,以便于控制⽇志的输出,并提供等级枚举转字符串功能。 ◦ OFF:关闭 ◦ DEBUG:调试,调试时的关键信息输出。 ◦ INFO:提⽰,普通的提⽰…...
Tauri窗口与界面管理:打造专业桌面应用体验 (入门系列五)
窗口管理是桌面应用的核心特性之一,良好的窗口管理可以显著提升用户体验。在Web开发中,我们通常被限制在浏览器窗口内,但Tauri允许前端开发者控制应用窗口的方方面面,从而创造出更加原生的体验。 窗口配置基础 初始窗口配置 在…...
golang goroutine(协程)和 channel(管道) 案例解析
文章目录 goroutine和channel概念开启线程与channel简单通信流程多个工作协程并发执行流程 goroutine和channel概念 goroutine(协程),一般我们常见的是进程,线程,进程可以理解为一个软件在运行执行的过程,线程跟协程比较类似&…...
底层源码和具体测试解析HotSpot JVM的notify唤醒有序性(5000字详解)
在大家的认知里,或者大家也可能搜过,notify唤醒机制到底是随机的呢?还是顺序的呢?在网上其实也有很多人说notify的唤醒机制就是随机的,但实际上并不是这样的,notify的唤醒机制是先进先出的! 目…...
Jenkins(CI/CD工具)
1. 什么是 Jenkins? Jenkins 是一个开源的持续集成(CI)和持续交付/部署(CD)工具,用于自动化软件构建、测试和部署过程。 2. Jenkins 优势 (1)开源免费:社区活跃&#…...