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

西湖大学团队开源SaProt等多款蛋白质语言模型,覆盖结构功能预测/跨模态信息搜索/氨基酸序列设计等

2025 年 3 月 22—23 日,上海交通大学「AI 蛋白质设计峰会」正式举行。 本次峰会汇聚了来自清华大学、北京大学、复旦大学、浙江大学、厦门大学等知名高校的 300 多位专家学者,以及 200 余位行业领军企业代表和技术研发人员,深入探讨了 AI 在蛋白质设计领域的最新研究成果、技术突破及产业化应用前景等。

在这里插入图片描述

西湖大学原发杰博士在峰会上带来深度分享

在峰会期间,西湖大学原发杰博士以「蛋白质大语言模型研究与应用」为主题,向大家分享了蛋白质语言模型的最新研究进展,并详细介绍了团队的重要成果, 包括蛋白质语言模型 SaProt、ProTrek、Pinal、Evolla 等。HyperAI超神经在不违原意的前提下,对其深度分享进行了整理汇总,以下为演讲精华实录。

值得关注的蛋白质语言模型

蛋白质是由 20 种氨基酸串联而成的生物大分子,它们在体内承担催化、代谢等关键功能,是生命活动的主要执行者。生物学家通常将蛋白质的结构划分为 4 个层级:一级结构描述蛋白质的氨基酸序列、二级结构关注蛋白质局部构象、三级结构代表蛋白质整体的三维构型、四级结构则涉及多个蛋白质分子间的相互作用。在 AI 蛋白质领域,主要是基于这些结构来展开研究。

在这里插入图片描述

例如,从蛋白质序列预测其三维结构,这正是 AlphaFold 2 解决的核心问题——攻克了困扰科学界长达 50 年的蛋白质折叠问题,并因此荣获诺贝尔奖。反之,根据结构和功能设计新的蛋白质序列,即 Protein Design,这一领域的重要贡献者 David Baker 教授同样也获得了诺贝尔奖。

传统上,蛋白质结构通常以 PDB 坐标的形式来表示,近年来,研究人员们探索了将连续空间结构信息转化为离散 token 的方法,比如 Foldseek、ProTokens、FoldToken、ProtSSN、ESM-3 等。
*Foldseek 可以将蛋白质的三维结构编码成一维的离散 token。

我们团队的蛋白质语言模型就是基于这些离散结果来展开研究。

大多数 AI + 蛋白质的研究都可以追溯到自然语言处理的研究,所以我们先来回顾一下自然语言处理 (NLP) 领域的两个经典语言模型:一个是以 GPT 系列为代表的单向语言模型, 其机制是基于从左到右的信息流动方式,根据左侧的数据(上文)预测下一个 token。一个是以 BERT 为代表的双向语言模型, 其通过 Masked Language Model 做预训练,可以看到某个 cooked 左右两侧的信息(上下文),从而预测该 cooked。

在这里插入图片描述

在蛋白质领域,这两类模型都有其对应的蛋白质语言模型。 比如,对应 GPT,有 ProtGPT2、ProGen 等。 对应 BERT,有 ESM 系列模型:ESM-1b、ESM-2、ESM-3,它们主要是通过遮盖一些氨基酸,并预测其「真实身份」,在自然语言任务中,也就是遮住一些单词,然后预测这些单词。如下图左侧所示,在蛋白质社区影响力比较大的语言模型还有 MSA Transformer、GearNet 、ProTrans 等。

在这里插入图片描述

入选 ICLR 2024,蛋白质语言模型 SaProt 融合结构知识

我要向大家介绍的第一个成果是具有结构感知词汇的蛋白质语言模型 SaProt, 这篇论文以「SaProt: Protein Language Modeling with Structure-aware Vocabulary」为题曾入选 ICLR 2024。

这篇论文中,我们提出了结构感知词汇 (structure-aware vocabulary) 的概念,并将氨基酸残基 token 与结构 token 结合,在约 4,000 万条蛋白质序列与结构数据集上训练了一个大规模通用蛋白质语言模型 SaProt,该模型在 10 项重要的下游任务中全面超越已有的成熟基线模型。
SaProt 开源地址:
https://github.com/westlake-repl/SaProt
SaProt 论文地址:
https://openreview.net/forum?id=6MRm3G4NiU

我们为什么要做这个模型?

其实,大多数蛋白质语言模型的输入信息主要基于氨基酸序列。在 AlphaFold 取得突破后,DeepMind 团队与欧洲生物信息研究所 (EMBL-EBI) 合作,发布了 AlphaFold 蛋白质结构数据库 (AlphaFold Protein Structure Database),其中存储了 2 亿的蛋白质结构。于是我们开始考虑:能否将蛋白质的结构信息整合到语言模型中,以提升其性能表现?

在这里插入图片描述

我们的做法非常简单:采用 Foldseek,将蛋白质的结构信息从坐标形式转换为离散 token,从而构建氨基酸词表和结构词表,然后对这两个词表进行交叉组合,生成新的词表,也就是结构感知词汇 (Structure-aware Vocabulary, SA token)。这样一来,原本的氨基酸序列就可以转化为一种新的氨基酸序列——在这个序列中,大写字母代表氨基酸 token,小写字母代表结构 token,然后,就可以继续做 Masked Language Model 了。基于此,我们训练了一个 6.5 亿参数的 SaProt 模型,该模型使用了 64 张 A100 GPU,总训练时间约 3 个月。

在这里插入图片描述

我们为什么选择 Foldseek 转化蛋白质结构 token?

在最终确定使用 Foldseek 3Di token sequence 之前,我们经历了长达半年的探索。直觉上,将结构信息融入蛋白质语言模型应该能带来性能提升,但实际尝试时我们用了多种方法都未成功。比如,我们用了 GNN 方法来建模蛋白质结构。因为蛋白质结构其实是一个图神经网络,我们自然而然就想把蛋白质结构当做图来建模,于是采用了 MIF 方法,但发现训练的模型泛化能力较差,无法推广至真实的 PDB 结构上。我们深入分析后认为,这可能是因为采用 Masked Language Model 的建模方式会出现信息泄露问题。

简单来讲,AlphaFold 预测的蛋白质结构本身存在某种偏差 (bias)、模式、AI 预测的痕迹。当用这些数据去训练语言模型时,模型很容易就能捕捉到这些痕迹,从而导致模型在训练数据上表现很好,但泛化能力极差。

在这里插入图片描述

我们尝试了各种改进,包括使用 Evoformer 方法,但信息泄露问题依然存在,直到尝试了 Foldseek,我们发现得到的 SaProt 模型在 AlphaFold 预测的结构数据上 loss 能够下降,在真实 PDB 结构数据上 loss 同样显著下降,满足了我们的预期。

此外,SaProt 在多个基准测试中表现良好, 去年,它也曾在权威榜单 ProteinGym 上排名第一。与此同时,我们也搜集到社区对 SaProt /ColabSaProt 进行了超过 10 种蛋白质的湿实验验证(如各种酶突变改造,荧光蛋白质改造与荧光性预测等)结果,均表现优异。

在这里插入图片描述

虽然我们认为 SaProt 模型还不错,但考虑到许多生物学家并未接受深度学习相关的训练, 让他们独立微调一个规模达 10 亿参数左右的蛋白质语言模型是非常困难的,于是我们构建了一个交互界面式平台 ColabSaprot + SaprotHub。

在这里插入图片描述

在传统的模型训练流程 (Normal pipeline) 中,用户需要经历数据准备、环境配置、代码编写、数据处理、模型训练、模型评估、模型推理等多个环节。而有了 ColabSaprot 之后,整个过程被大大简化——用户只需点击几下按钮,即可完成环境安装、模型训练和预测等操作,大大降低了使用门槛。

如下图所示,ColabSaprot 主要由训练模块、预测模块和共享模块 3 部分组成。

在这里插入图片描述

  • 在训练模块中,用户只需在左侧描述任务并上传数据,然后点击训练即可。系统会自动选择最优的超参数(如 Batch Size 等)。

  • 在预测模块中,用户可以直接加载自己之前训练的模型,并进行预测。也可以直接录入其他研究人员分享的模型去做预测。

  • 共享模块提供了一种既保护数据隐私、又能进行成果共享的方式。许多实验室的数据极为珍贵,一些研究人员可能还需要用这些数据做后续研究,但他们仍希望分享现有模型。在 ColabSaprot 中,用户可以仅共享模型本身,由于模型本质上是一个黑盒,其他人也无法获取原始数据。

在共享模型时,考虑到语言模型通常规模庞大,直接在线分享一个 10 亿参数的模型几乎是不可行的。因此,我们采用了一种成熟的 Adapter 机制, 用户只需共享极少量的参数——通常仅占原始模型参数的 1% 或 1/1,000 即可。大家可以互相 share Adapter,并加载其他人的 Adapter,在此基础上进行微调或预测,如果改进效果良好,还可以再次分享新的 Adapter,从而形成一种高效的社区合作机制,大大提升了研究效率。

在这里插入图片描述

此外,我们也进行了用户研究 (User Study), 邀请了 12 位没有机器学习背景、编程基础的同学试用 ColabSaprot 平台。我们提供数据,并告诉他们要做的任务,要求他们使用 ColabSaprot 进行模型训练和预测。最终,将他们的结果与 AI 专家的表现进行对比,我们发现这些非专业用户使用 ColabSaprot 后,能够达到与专家相近的水平。

另外,为了推动蛋白质语言模型共享,我们还建立了一个名为 OPMC 的社区, 该领域的国内外知名学者参与其中,鼓励大家共同分享模型,促进合作与交流。
OPMC 地址:

https://theopmc.github.io/

在这里插入图片描述

ProTrek 模型:可查找蛋白质序列、结构、功能之间的对应关系

我要介绍的第二个工作是蛋白质语言模型 ProTrek。

在生物研究中,许多科学家面临这样的需求:手头有一个基因组的很多蛋白质,但并不清楚它们的具体功能。

ProTrek 是一个三模态语言模型,可用于对序列、结构和功能进行对比学习。 借助其自然语言搜索界面,用户能够在几秒内探索庞大的蛋白质空间,并搜索序列、结构、功能所有两两组合的 9 种不同任务之间的关系。也就是说,使用 ProTrek,用户只需输入蛋白质序列并点击按钮,即可快速查找蛋白质功能、结构相关信息。同样,也可以根据功能找序列、结构信息,根据结构查找序列、功能信息等。此外,它还支持 sequence—sequence、structure—structure 类的查找。
ProTrek 使用地址:

http://search-protrek.com/

在这里插入图片描述

我们合作者对 ProTrek 模型进行了干、湿实验的评估, 与现有相关方法相比,ProTrek 在性能上取得了显著提升。此外,我们还利用 ProTrek 生成了大量数据,用于训练我们的生成模型,效果同样表现优异。

在这里插入图片描述

在这里插入图片描述

我们在 Twitter 上注意到,许多用户已经开始使用 ProTrek 参与竞赛, 也收到了不少积极反馈,进一步证明了该模型的实用性。

在这里插入图片描述

Pinal 模型:只需输入文本,即可设计全新蛋白质序列

我们的另一个工作是基于文本描述设计蛋白质的模型 Pinal。

传统的蛋白质设计通常需要考虑复杂的因素,如生物物理学的能量函数模板信息等。我们想探讨的是,既然大语言模型在许多任务中表现出色,是否可以设计一个基于文本的蛋白质语言模型?在这个模型中,我们只需要简单地描述某个蛋白质的信息,就能设计其氨基酸序列?
Pinal 使用地址:
http://www.denovo-pinal.com/
论文地址:
https://www.biorxiv.org/content/10.1101/2024.08.01.606258v1

在这里插入图片描述

我简单介绍一下 Pinal(160 亿参数)的基本原理。 最初,我们的思路是采用编码器-解码器架构,输入文本,然后输出氨基酸序列。但尝试了很长时间,效果一直不理想,主要原因是氨基酸序列的空间过于庞大,导致预测困难。

因此,我们调整了策略,首先设计蛋白质的结构,然后根据结构和文本提示来设计氨基酸序列,这里的蛋白质结构也采用离散化编码进行表示。结果发现,结合结构的设计方法,在 Next Token Prediction Accuracy 上的表现明显优于直接预测氨基酸序列的方法,如下图所示。

在这里插入图片描述

我们近期收到合作者对 Pinal 的湿实验验证, Pinal 设计了 6 条蛋白质序列,其中 3 条表达,2 条序列经过验证具有相应的酶催化活性。值得一提的是,在这个工作中,我们并没有强调一定要设计出比野生型更优秀的蛋白质,我们的主要目标是验证根据文本设计出来的蛋白质是否具有相应的蛋白质功能。

Evolla 模型:解码蛋白质分子语言

最后介绍的成果是 Evolla 模型, 这是一个 800 亿参数的蛋白质语言生成模型,也是最大的开源生物大模型(之一),旨在解码蛋白质的分子语言。

通过整合蛋白质的序列、结构和用户查询信息,Evolla 能够生成准确的蛋白质功能见解。 用户只需输入蛋白质的序列和结构,然后提出问题,比如介绍该蛋白质基本功能或催化活性,直接点击按钮,Evolla 就会生成约 200-500 字的详细描述。
Evolla 使用地址:

http://www.chat-protein.com/
Evolla 论文地址:

https://www.biorxiv.org/content/10.1101/2025.01.05.630192v2

在这里插入图片描述

值得一提的是,Evolla 这个工作训练数据和算力非常巨大,仅仅训练数据收集和处理我们就有两位博士生花了近 1 年时间,最终我们通过合成数据手段,产生了超过 5 亿条高质量蛋白质-文本对数据,覆盖千亿级 word token。模型在酶的功能预测上表现相当准确,但也不可避免地存在一些幻觉问题。

在这里插入图片描述

团队介绍

西湖大学原发杰博士主要从事传统机器学习及交叉学科相关的应用科学研究,并专注于 AI 大模型与计算生物学的探索,在机器学习与人工智能领域的顶会和期刊上(如 NeurIPS、ICLR、SIGIR、WWW、TPAMI、Molecular Cell等)发表了 40 余篇学术论文,团队成员及项目贡献者信息详见论文。

课题组长期开展机器学习和 AI + 生物信息方向的研究,欢迎申请课题组博士生、科研助理、博士后、研究员系列职位,在校生欢迎来实验室访问实习。有意者可发简历到邮箱 yuanfajie@westlake.edu.cn。

相关文章:

西湖大学团队开源SaProt等多款蛋白质语言模型,覆盖结构功能预测/跨模态信息搜索/氨基酸序列设计等

2025 年 3 月 22—23 日,上海交通大学「AI 蛋白质设计峰会」正式举行。 本次峰会汇聚了来自清华大学、北京大学、复旦大学、浙江大学、厦门大学等知名高校的 300 多位专家学者,以及 200 余位行业领军企业代表和技术研发人员,深入探讨了 AI 在…...

ansible+docker+docker-compose快速部署4节点高可用minio集群

目录 github项目地址 示例服务器列表 安装前 修改变量文件group_vars/all.yml 修改ansible主机清单 修改setup.sh安装脚本 用法演示 安装后验证 github项目地址 https://github.com/sulibao/ansible_minio_cluster.git 示例服务器列表 安装前 修改变量文件group_var…...

说话人分离中的聚类方法:深入解析Agglomerative聚类、KMeans聚类和Oracle聚类

说话人分离(Speaker Diarization)是将音频流根据说话人身份划分为同质片段的过程。这一过程中的关键步骤是聚类,即将说话人嵌入(embeddings)分组为不同的簇,每个簇代表一个独特的说话人。在pyannote.audio管…...

蓝桥杯真题——前缀总分、遗迹

蓝桥杯2024年第十五届省赛真题-前缀总分 题目描述 给定 n 个由小写英文字母组成的字符串 s1, s2, , sn &#xff0c;定义前缀总分为V ∑i<j P(si, sj) &#xff0c;其中 P(si, sj) 表示 si, sj 的最长公共前缀的长度。 小蓝可以选择其中一个字符串&#xff0c;并修改其…...

性能比拼: MySQL vs PostgreSQL

本内容是对知名性能评测博主 Anton Putra MySQL vs PostgreSQL Performance Benchmark (Latency - Throughput - Saturation) 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 MySQL vs PostgreSQL 数据库性能对比** 在本内容中&#xff0c;我们将对比 MySQL 和 Pos…...

TypeScript 中的 infer 关键字用途

infer 是 TypeScript 中的高级类型关键字&#xff0c;主要用于条件类型中推断类型。它允许我们在条件类型的 extends 子句中声明一个类型变量&#xff0c;然后在该条件类型的 true 分支中使用这个推断出的类型。 1. 基本语法 type SomeType<T> T extends infer U ? U…...

关于Spring MVC中@RequestParam注解的详细说明,用于在前后端参数名称不一致时实现参数映射。包含代码示例和总结表格

以下是关于Spring MVC中RequestParam注解的详细说明&#xff0c;用于在前后端参数名称不一致时实现参数映射。包含代码示例和总结表格&#xff1a; 1. 核心作用 RequestParam用于显式绑定HTTP请求参数到方法参数&#xff0c;支持以下场景&#xff1a; 参数名不一致&#xff1…...

Spring Boot中Spring MVC相关配置的详细描述及表格总结

以下是Spring Boot中Spring MVC相关配置的详细描述及表格总结&#xff1a; Spring MVC 配置项详解 1. 异步请求配置 spring.mvc.async.request-timeout 描述&#xff1a;设置异步请求的超时时间&#xff08;单位&#xff1a;毫秒&#xff09;。默认值&#xff1a;未设置&…...

Shell脚本编程之正则表达式

一、概念 在 Shell 脚本中&#xff0c;正则表达式是一种强大且常用的文本处理工具&#xff0c;它可以用来匹配、搜索、替换和截取字符串。 正则表达式是由一些字符去描述规则&#xff0c;在正则表达式中有两类字符 (1)元字符(Meta Character)&#xff1a;Shell 环境中具有特殊含…...

spring-ai-openai调用Xinference1.4.1报错

1、Xinference 报错logs 此处是调用 /v1/chat/completions 接口 2025-04-06 15:48:51 xinference | return await dependant.call(**values) 2025-04-06 15:48:51 xinference | File "/usr/local/lib/python3.10/dist-packages/xinference/api/restful_api.py", …...

XC7K160T-2FFG676I Kintex‑7系列 Xilinx 赛灵思 FPGA 详细技术规格

XC7K160T-1FFG676I XC7K160T-1FFG676C XC7K160T-2FFG676C 1. 基本概述 XC7K160T-2FFG676I 属于 Xilinx Kintex‑7 系列 FPGA&#xff0c;该系列芯片采用 28nm &#xff08;HKMG&#xff09;工艺制造&#xff0c;旨在提供高性能与低功耗的平衡。该芯片主要面向对高速数据处理、…...

C++学习之udp通信

1.UDP特点 c /* udp 传输层协议, 和tcp是一样的 特点: 面向无连接的, 不安全的, 报式传输协议 1. 无连接: udp通信的时候不需要connect 1). 通信不需要建立连接 2). 如果想给对方发送数据, 只需要指定对方的IP和端口 2. udp会丢包 1). 数…...

2020年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析

2020年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析 全国大学生数学建模竞赛(China Undergraduate Mathematical Contest in Modeling)是国家教委高教司和中国工业与应用数学学会共同主办的面向全国大学生的群众性科技活动,目的在于激励学生学习数学的积极性,提高学…...

【数据标准】数据标准化实施流程与方法-保障机制篇

导读&#xff1a;1、数据标准化保障机制&#xff08;组织架构、协作流程&#xff09;是​​战略落地的基石​​&#xff0c;确保责权分明与资源协同&#xff1b;2、数据标准化制度建设&#xff08;政策、标准、工具&#xff09;构建了​​统一治理框架​​&#xff0c;规范数据…...

ZLMediaKit部署与配置

ZLMediaKit编译 # 安装编译器 sudo apt install build-essential cmake# 其它依赖库 sudo apt-get install libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg git cd /usr/local/srcgit clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit.git cd ZLMediaKit# …...

38、web前端开发之Vue3保姆教程(二)

三、Vue3语法详解 1、组件 1 什么是组件? 组件是 Vue.js 中最重要的概念之一。它是一种可复用的 Vue 实例,允许我们将 UI 拆分为独立的、可复用的部分。组件可以提高代码的组织性和可维护性。 2 创建组件 在 Vue 3 中,组件通常使用单文件组件(SFC)编写,其包含三个主…...

知识中台如何重构企业信息生态?关键要素解析

在信息化快速发展的时代&#xff0c;企业面临着如何高效整合和管理知识资源的挑战。知识中台作为企业信息管理的核心工具&#xff0c;正在帮助企业提升运营效率和创新力。本文将探讨知识中台如何重构企业信息生态&#xff0c;并解析其关键要素。 一、什么是知识中台&#xff1f…...

蓝桥杯python组备赛(记录个人模板)

文章目录 栈队列堆递归装饰器并查集树状数组线段树最近公共祖先LCAST表字典树KMPmanacher跳表(代替C STL的set)dijkstra总结 栈 用list代替 队列 用deque双端队列替代 堆 用heapq 递归装饰器 众所周知&#xff0c;python的递归深度只有1000&#xff0c;根本满足不了大部…...

C++的多态 - 下

目录 多态的原理 虚函数表 1.计算包含虚函数类的大小 2.虚函数表介绍 多态底层原理 1.父类引用调用 2.父类指针调用 3.动态绑定与静态绑定 单继承和多继承关系的虚函数表 函数指针 1.函数指针变量 (1)函数指针变量创建 (2)函数指针变量的使用 (3)两段有趣的代码 …...

XSS(跨站脚本攻击)

什么是 XSS 攻击&#xff1f; XSS 攻击&#xff08;Cross-Site Scripting&#xff09;是一种常见的网络攻击手段&#xff0c;攻击者通过在网站上注入恶意的 JavaScript 代码&#xff0c;让网站在用户的浏览器中执行这些恶意代码&#xff0c;进而达到 窃取信息、篡改网页内容 或…...

LLM Agents的历史、现状与未来趋势

引言 大型语言模型&#xff08;Large Language Model, LLM&#xff09;近年在人工智能领域掀起革命&#xff0c;它们具备了出色的语言理解与生成能力。然而&#xff0c;单纯的LLM更像是被动的“回答者”&#xff0c;只能根据输入给出回复。为了让LLM真正“行动”起来&#xff…...

最简rnn_lstm模型python源码

1.源码 GitCode - 全球开发者的开源社区,开源代码托管平台 不到120行代码&#xff0c;参考了《深度学习与交通大数据实战》3.2节。注意这本书只能在京东等在线商城网购&#xff0c;才能拿到相应的数据集和源码。我的是在当地新华书店买的——买清华出版社&#xff0c;记得这个…...

基于Android的图书借阅和占座系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 基于Android的图书借阅和占座系统设计的目的是为用户提供图书信息、图书馆、图书资讯等内容&#xff0c;用户可以进行图书借阅、预约选座等操作。 与PC端应用程序相比&#xff0c;图书借阅和占座系统的设计主要面向于广大用户&#xff0c;旨在为用户提供一个图书借阅及占…...

vue3+element-plus动态与静态表格数据渲染

一、表格组件&#xff1a; <template> <el-table ref"myTable" :data"tableData" :header-cell-style"headerCellStyle" header-row-class-name"my-table-header" cell-class-name"my-td-cell" :row-style"r…...

数据库50个练习

数据表介绍 --1.学生表 Student(SId,Sname,Sage,Ssex) --SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(CId,Cname,TId) --CId 课程编号,Cname 课程名称,TId 教师编号 --3.教师表 Teacher(TId,Tname) --TId 教师编号,Tname 教师姓名 --4.成绩…...

Open CASCADE学习|读取点集拟合样条曲线(续)

问题 上一篇文章已经实现了样条曲线拟合&#xff0c;但是仍存在问题&#xff0c;Tolerance过大拟合成直线了&#xff0c;Tolerance过大头尾波浪形。 正确改进方案 1️⃣ 核心参数优化 通过调整以下参数控制曲线平滑度&#xff1a; Standard_Integer DegMin 3; // 最低阶…...

HTML基础教程:创建双十一购物狂欢节网页

页面概况&#xff1a; 在这篇技术博客中&#xff0c;我将详细讲解如何使用HTML基础标签创建一个简单而美观的双十一购物狂欢节主题网页。我们将逐步分析代码结构&#xff0c;了解每个HTML元素的作用&#xff0c;以及如何通过HTML属性控制页面布局和样式。 页面整体结构 首先&…...

ES6 新增特性 箭头函数

简述&#xff1a; ECMAScript 6&#xff08;简称ES6&#xff09;是于2015年6月正式发布的JavaScript语言的标准&#xff0c;正式名为ECMAScript 2015&#xff08;ES2015&#xff09;。它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序&#xff0c;成为企业级开发语…...

【C++算法】49.分治_归并_计算右侧小于当前元素的个数

文章目录 题目链接&#xff1a;题目描述&#xff1a;解法C 算法代码&#xff1a;图解 题目链接&#xff1a; 315. 计算右侧小于当前元素的个数 题目描述&#xff1a; 解法 归并排序&#xff08;分治&#xff09; 当前元素的后面&#xff0c;有多少个比我小。&#xff08;降序&…...

Multi-class N-pair Loss论文理解

一、N-pair loss 对比 Triplet loss 对于N-pair loss来说&#xff0c;当N2时&#xff0c;与triplet loss是很相似的。对anchor-positive pair&#xff0c;都只有一个negative sample。而且&#xff0c;N-pair loss&#xff08;N2时&#xff09;为triplet loss的平滑近似Softpl…...

uniapp微信小程序地图marker自定义气泡 customCallout偶尔显示不全解决办法

这个天坑问题&#xff0c;在微信开发工具上是不会显示出来的,只有在真机上才会偶尔出现随机样式偏移/裁剪/宽长偏移&#xff0c;询问社区也只是让你提交代码片段&#xff0c;并无解决办法。 一开始我怀疑是地图组件加载出现了问题&#xff0c;于是给地图加了一个v-if"reL…...

蓝桥杯嵌入式总结

1.lcd显示和led引脚冲突 在lcd使用到的函数中加入两行代码 uint16_t temp GPIOC->ODR; GPIOC->ODR temp; 2.关于PA15,PB4pwm波输入捕获 首先pwm输入捕获中断 使用 HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1); 再在输入捕获中断回调函数中使用 void HAL…...

C#的反射机制

C#反射机制详解 什么是反射&#xff1f; 反射(Reflection)是C#中的一项强大功能&#xff0c;它允许程序在运行时动态获取类型信息、访问和操作对象成员。简单来说&#xff0c;反射使程序可以在不预先知道类型的情况下&#xff0c;查看、使用和修改程序集中的代码。 常见反射…...

Java并发编程高频面试题

一、基础概念 1. 并行与并发的区别&#xff1f; 并行&#xff1a;多个任务在多个CPU核心上同时执行&#xff08;物理上同时&#xff09;。并发&#xff1a;多个任务在单CPU核心上交替执行&#xff08;逻辑上同时&#xff09;。类比&#xff1a;并行是多个窗口同时服务&#x…...

Invalid bound statement (not found)

前言&#xff1a; 通过实践而发现真理&#xff0c;又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识&#xff0c;又从理性认识而能动地指导革命实践&#xff0c;改造主观世界和客观世界。实践、认识、再实践、再认识&#xff0c;这种形式&#xff0c;循环往…...

【Vue-路由】学习笔记

目录 <<回到导览路由1.单页应用和多页面2.路由基本使用2.1.路由的含义2.2.VueRouter插件2.3.配置路由规则和导航2.4.组件目录存放2.5.路由模块封装 3.rounter3.1.router-link实现高亮3.2.自定义匹配类名3.3.声明式导航3.3.1.查询参数传参3.3.2.动态路由传参3.3.3.总结 3.…...

前端服务配置详解:从入门到实战

前端服务配置详解&#xff1a;从入门到实战 一、环境配置文件&#xff08;.env&#xff09; 1.1 基础结构 在项目根目录创建 .env 文件&#xff1a; # 开发环境 VUE_APP_API_BASE_URL http://localhost:3000/api VUE_APP_VERSION 1.0.0# 生产环境&#xff08;.env.produc…...

Java安全管理器 - SecurityManager

什么是Java安全管理器&#xff1f; Java安全管理器是Java提供的保护JVM和程序安全的机制&#xff0c;它能限制用户的代码对文件、内存、资源、网络的操作和访问&#xff0c;防止恶意代码入侵程序。常用来控制用户提交的代码对各种资源的访问权限&#xff0c;防止用户恶意提交代…...

Arrays操作工具 Lambda表达式 集合 迭代器 数据结构 泛型 set集合 list集合

Arrays操作工具 自己定义的排序规则 简单理解如果是&#xff1a;o1 - o2 升序排列 o2 - o1 降序排列 Lambda表达式 函数式编程 函数式编程&#xff08;Functional programming&#xff09;是一种思想特点。 面向对象&#xff1a;先去找对象&#xff0c;让对象做事情。。函数式…...

ORM、Mybatis和Hibernate、Mybatis使用教程、parameterType、resultType、级联查询案例、resultMap映射

DAY21.1 Java核心基础 ORM Object Relationship Mapping 对象关系映射 面向对象的程序到—关系型数据库的映射 比如java – MySQL的映射 ORM框架就是实现这个映射的框架 Hibernate、Mybatis、MybatisPlus、Spring Data JPA、Spring JDBC Spring Data JPA的底层就是Hiber…...

《Java八股文の文艺复兴》第十一篇:量子永生架构——对象池的混沌边缘(终极试炼·完全体)

Tags: - Java高并发 - 量子架构 - 混沌工程 - 赛博修真 - 三体防御 目录&#xff1a; 卷首语&#xff1a;蝴蝶振翅引发的量子海啸 第一章&#xff1a;混沌初开——对象池的量子涅槃&#xff08;深度扩展&#xff09; 第二章&#xff1a;混沌计算——对象复活的降维打击&…...

蓝桥杯备赛---真题训练之15届蓝桥杯找回连接之旅

题目 介绍 在网络世界中&#xff0c;突然间失去了所有的连接。作为勇敢的冒险者&#xff0c;你将踏上一段惊险刺激的旅程&#xff0c;穿越充满谜题和挑战的网络景观&#xff0c;与神秘的网络幽灵对抗&#xff0c;解开断网之谜&#xff0c;找回失去的连接&#xff0c;带领人们重…...

PowerApps MDA-模版-文档模版无法下载和上传Word模版

Power Apps的高级设置-模版中&#xff0c;文档模版目前只能看到新建和上传Excel模版&#xff0c;看不到Word模版 这是一个已知bug, 什么时候能修复不好说&#xff0c;解决办法也很简单&#xff0c;先上传一个Excel模版&#xff0c;随便任何一个实体就行&#xff0c;为的是视图列…...

全国大学生数学建模竞赛赛题深度分析报告(2010-2024)

全国大学生数学建模竞赛赛题深度分析报告&#xff08;2010-2024&#xff09; 全国大学生数学建模竞赛(CUMCM)是中国最具影响力的大学生科技竞赛之一&#xff0c;本报告将对2010-2024年间的赛题进行全面统计分析&#xff0c;包括题目类型、领域分布、模型方法等多个维度&#x…...

职坐标解析自动驾驶技术发展新趋势

内容概要 作为智能交通革命的核心驱动力&#xff0c;自动驾驶技术正以惊人的速度重塑出行生态。2023年&#xff0c;行业在多传感器融合与AI算法优化两大领域实现突破性进展&#xff1a;激光雷达、摄像头与毫米波雷达的协同精度提升至厘米级&#xff0c;而深度学习模型的实时决…...

快速入手-前后端分离Python权限系统 基于Django5+DRF+Vue3.2+Element Plus+Jwt

引用&#xff1a;打造前后端分离Python权限系统 基于Django5DRFVue3.2Element PlusJwt 视频教程 &#xff08;火爆连载更新中..&#xff09;_哔哩哔哩_bibili 说明&#xff1a;1、结合个人DRF基础和该视频去根据自己的项目进行开发。 2、引用该视频中作者的思路去升华自身的项…...

HTTP 协议详解

HTTP 协议 HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是互联网上应用最广泛的协议之一&#xff0c;用于在客户端&#xff08;如浏览器&#xff09;和服务器之间传输超文本&#xff08;如网页&#xff09;。 HTTP 是万维网&#xff…...

巧记英语四级单词 Unit1-4【晓艳老师版】

tain—take拿着、sus 下面&#xff0c;只有sur表示上面、ob表示方向、de往下&#xff0c;分开 retain v.保持 re-重复&#xff0c;tain—take拿着&#xff0c;重复的拿着maintain v. 维持&#xff0c;维修&#xff0c;保养 main主要的&#xff0c;主要的东西都拿着的那个人维…...

Transformers without Normalization论文翻译

论文信息&#xff1a; 作者&#xff1a;Jiachen Zhu, Xinlei Chen, Kaiming He, Yann LeCun, Zhuang Liu 论文地址&#xff1a;arxiv.org/pdf/2503.10622 代码仓库&#xff1a;jiachenzhu/DyT: Code release for DynamicTanh (DyT) 摘要 归一化层在现代神经网络中无处不在…...

Ollama

目录 定义与核心功能应用场景Ollama与Llama的关系安装与使用 Ollama是一个开源的本地大语言模型&#xff08;LLM&#xff09;运行框架&#xff0c;专为在本地机器上便捷部署和运行大型语言模型而设计。以下是关于Ollama的全面介绍&#xff1a; 定义与核心功能 多种预训练语言模…...