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

《Keras 3部署全攻略:从新手到实战高手》

《Keras 3部署全攻略:从新手到实战高手》

一、引言:开启 Keras 3 部署之旅

在深度学习的广阔领域中,Keras 一直以其简洁易用、高度模块化的特性,深受开发者的喜爱,被誉为深度学习的 “福音”。而如今,Keras 3 的强势登场,更是为这个领域注入了全新的活力。它像是一位集大成者,整合了 JAX、TensorFlow 和 PyTorch 等多个强大的后端,打破了框架之间的壁垒,为开发者们带来了前所未有的自由和便利。

想象一下,你可以根据项目的需求和场景,灵活地选择最适合的后端,就像为不同的旅途挑选最合适的交通工具一样。如果追求极致的训练和推理性能,JAX 可能是你的首选,它在 GPU、TPU 和 CPU 上常常能展现出卓越的表现;而 TensorFlow 则在生产环境中有着深厚的积累,其完善的生态系统和对分布式计算的良好支持,使其成为大规模应用的可靠选择;PyTorch 则凭借简洁直观的前端 API 和动态计算图的特性,在研究领域备受青睐,让开发者能够更方便地进行实验和创新。Keras 3 就像是一个万能的适配器,让你能够轻松驾驭这些不同的框架,充分发挥它们的优势。

那么,为什么部署对于 Keras 3 如此重要呢?简单来说,部署就像是将精心打造的产品推向市场的关键一步。在深度学习中,训练好的模型就像是一件半成品,只有通过有效的部署,才能真正发挥它的价值,为用户提供服务。无论是图像识别应用中的实时图像分类,还是自然语言处理领域的智能聊天机器人,又或是医疗领域中基于深度学习的疾病诊断辅助系统,都离不开模型的部署。

一个成功的部署方案,能够确保模型在各种复杂的生产环境中稳定运行,高效地处理大量的请求,同时还要保证低延迟和高吞吐量,以提供良好的用户体验。如果部署环节出现问题,即使模型在训练阶段表现得再优秀,也无法转化为实际的生产力,就像一辆性能卓越的汽车,却因为糟糕的驾驶技术而无法在道路上飞驰一样。

在接下来的文章中,我们将一起深入探索 Keras 3 部署的精彩世界,从前期的环境准备到各种部署方式的详细介绍,再到实际应用案例的剖析以及性能优化的技巧,相信通过这趟旅程,你将对 Keras 3 部署有全面而深入的理解,能够熟练地将 Keras 3 模型部署到各种生产环境中,开启深度学习应用的新篇章。

二、部署前的准备工作

2.1 了解 Keras 3 的特性与优势

Keras 3 在深度学习领域中带来了许多令人瞩目的特性,使其在众多框架中脱颖而出。其中,多后端支持无疑是其最为显著的特性之一。Keras 3 打破了框架之间的界限,能够兼容 JAX、TensorFlow 和 PyTorch 等多个强大的后端 。这就好比一个万能的工具盒,开发者可以根据项目的具体需求和场景,灵活地选择最合适的后端,就像为不同的任务挑选最趁手的工具一样。

例如,在一些对计算性能要求极高的场景中,JAX 凭借其采用的 XLA(Accelerated Linear Algebra)加速技术,能够在 GPU、TPU 和 CPU 上实现高效的计算,常常能展现出卓越的训练和推理性能。而 TensorFlow 则在生产环境中有着深厚的积累,其完善的生态系统和对分布式计算的良好支持,使其成为大规模应用的可靠选择。PyTorch 则以其简洁直观的前端 API 和动态计算图的特性,在研究领域备受青睐,让开发者能够更方便地进行实验和创新。Keras 3 的多后端支持,让开发者能够充分发挥这些不同框架的优势,提升项目的开发效率和性能。

分布式训练也是 Keras 3 的一大亮点。在当今大数据和深度学习模型日益复杂的背景下,分布式训练变得越来越重要。Keras 3 引入了全新的分布式 API,即keras.distribution命名空间 ,目前已在 JAX 后端实现,并且即将在 TensorFlow 和 PyTorch 后端实现。这个 API 提供了一系列强大的工具,支持数据并行性和模型并行性。通过数据并行性,开发者可以在多个设备上同时处理数据批次,大大加速了模型的训练过程,这对于大规模数据集的处理尤为重要。而模型并行性则允许将模型的各个部分分布到不同的设备上,从而加速模型的训练和推理,特别适用于复杂的深度学习模型。

为了更直观地理解 Keras 3 的优势,我们将其与 Keras 2 进行对比。在后端支持方面,Keras 2 后期主要依赖于 TensorFlow,这在一定程度上限制了开发者的选择。而 Keras 3 实现了多后端支持,为开发者提供了更大的灵活性。在分布式训练能力上,Keras 2 虽然也有一些分布式训练的方法,但相比 Keras 3 全新的分布式 API,其功能和易用性都稍显逊色。Keras 3 的分布式 API 使得在任意模型尺度和聚类尺度上实现模型并行、数据并行以及两者的组合变得更加轻松,而且将模型定义、训练逻辑和分片配置相互分离,使分发工作流更易于开发和维护。

在模型生态系统方面,Keras 3 也具有更大的优势。任何 Keras 3 模型都可以作为 PyTorch 模块实例化,可以作为 TensorFlow SavedModel 导出,也可以作为无状态 JAX 函数实例化。这意味着开发者可以将 Keras 3 模型与 PyTorch 生态系统包、全系列 TensorFlow 部署和生产工具(如 TF - Serving,TF.js 和 TFLite)以及 JAX 大规模 TPU 训练基础设施一起使用,大大扩展了模型的应用范围和开发的便利性。

2.2 环境搭建与依赖安装

在部署 Keras 3 之前,首先需要确保 Python 环境的安装和配置正确。Python 作为 Keras 3 的运行基础,其版本的选择也有一定的讲究。一般来说,建议安装 Python 3.7 及以上版本 ,因为这些版本在性能和兼容性方面都有更好的表现。

安装 Python 的过程相对简单,以在 Windows 系统上安装为例,可以从 Python 官方网站(https://www.python.org/downloads/ )下载对应的安装包。下载完成后,运行安装程序,在安装向导中,记得勾选 “Add Python to PATH” 选项,这样可以将 Python 添加到系统环境变量中,方便后续在命令行中使用 Python 命令。安装过程中,可以根据自己的需求选择安装路径,建议使用默认路径,这样可以减少一些潜在的问题。

安装完成后,可以在命令行中输入python --version来验证 Python 是否安装成功,并查看安装的版本号。如果显示出正确的版本号,说明 Python 已经成功安装。

虚拟环境的配置在项目开发中非常重要,它可以为每个项目提供独立的 Python 环境,避免不同项目之间的依赖冲突。这里推荐使用virtualenv或conda来创建虚拟环境。

使用virtualenv创建虚拟环境的步骤如下:首先,确保已经安装了virtualenv,如果没有安装,可以在命令行中使用pip install virtualenv来进行安装。安装完成后,在命令行中进入到想要创建虚拟环境的目录,然后使用virtualenv 虚拟环境名称命令来创建虚拟环境。例如,virtualenv myenv会在当前目录下创建一个名为myenv的虚拟环境。

创建完成后,进入虚拟环境的方法因操作系统而异。在 Windows 系统中,如果使用的是virtualenv创建的虚拟环境,进入虚拟环境的脚本位于虚拟环境目录下的Scripts文件夹中。可以通过cd myenv\Scripts命令进入该文件夹,然后运行activate.bat来激活虚拟环境。激活后,命令行的提示符会显示虚拟环境的名称,表示已经成功进入虚拟环境。

使用conda创建虚拟环境也很方便。conda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的 Python 和各种依赖包。首先需要安装Anaconda或Miniconda,安装完成后,在命令行中使用conda create -n 虚拟环境名称 python=版本号命令来创建虚拟环境。例如,conda create -n mycondaenv python=3.8会创建一个名为mycondaenv,Python 版本为 3.8 的虚拟环境。

创建完成后,使用conda activate 虚拟环境名称命令来激活虚拟环境。例如,conda activate mycondaenv就可以进入到创建的虚拟环境中。

在安装 Keras 3 及其相关依赖时,同样可以使用pip或conda。如果使用pip安装 Keras 3,可以在激活的虚拟环境中运行pip install keras命令。如果需要安装特定版本的 Keras 3,可以使用pip install keras==版本号的形式,例如pip install keras==3.0.0。

除了 Keras 3 本身,还需要安装相应的后端依赖。如果选择 TensorFlow 作为后端,可以使用pip install tensorflow来安装 TensorFlow。如果选择 JAX 作为后端,安装过程会稍微复杂一些,因为 JAX 的安装依赖于硬件设备和 CUDA 版本等因素。以在 GPU 上安装 JAX 为例,首先需要确保已经安装了合适版本的 CUDA 和 cuDNN,然后根据 JAX 官方文档的指引,使用相应的命令进行安装。例如,对于 CUDA 11.2 版本,可以使用pip install --upgrade "jax[cuda11_cudnn82]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html来安装 JAX。

如果选择 PyTorch 作为后端,可以根据 PyTorch 官方网站的安装指引,使用相应的命令进行安装。例如,在 CUDA 11.3 环境下,可以使用pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113来安装 PyTorch 及其相关库。

2.3 选择合适的部署后端

在 Keras 3 的部署过程中,选择合适的后端是一个关键决策,它直接影响到模型的性能、开发效率以及应用场景的适配性。TensorFlow、JAX 和 PyTorch 作为 Keras 3 支持的主要后端,各自具有独特的特点。

TensorFlow 作为一个成熟的深度学习框架,拥有庞大且完善的生态系统 。在这个生态系统中,包含了丰富的工具、库和资源,例如用于模型部署和服务化的 TensorFlow Serving,用于移动端和嵌入式设备的 TensorFlow Lite,以及用于网页端的 TensorFlow.js 等。这些工具和库为模型在不同场景下的部署提供了全面的支持,使得 TensorFlow 在生产环境中具有强大的竞争力。

在分布式计算方面,TensorFlow 也有着出色的表现。它提供了多种分布式策略,如MirroredStrategy、MultiWorkerMirroredStrategy和TPUStrategy等,可以方便地在多 GPU、多机器以及 TPU 等设备上进行分布式训练和推理。这使得 TensorFlow 非常适合处理大规模数据和复杂模型的训练和部署任务。

JAX 是一个相对较新但发展迅速的深度学习框架,它的最大优势在于其卓越的计算性能 。JAX 采用了 XLA(Accelerated Linear Algebra)编译器,能够对计算图进行优化和编译,从而实现高效的并行计算。在 GPU、TPU 和 CPU 等设备上,JAX 通常能够提供出色的训练和推理速度,尤其在处理大规模模型和复杂计算任务时,其性能优势更加明显。

JAX 还支持自动微分功能,这使得开发者可以方便地计算梯度,从而实现自定义的优化算法和模型。这种灵活性在一些研究和实验场景中非常有用,能够帮助开发者快速验证新的想法和算法。

PyTorch 以其简洁直观的前端 API 而受到广大开发者的喜爱 。其动态计算图的特性使得代码的编写和调试更加方便,开发者可以像编写普通 Python 代码一样构建和训练模型,能够实时查看和修改计算图,大大提高了开发效率。

在自然语言处理和计算机视觉等领域,PyTorch 也提供了丰富的高层抽象库,如 TorchText 和 TorchVision。这些库包含了许多预训练模型和工具,能够帮助开发者快速搭建和训练相关领域的模型,降低了开发的难度和工作量。

那么,如何根据项目需求来选择合适的后端呢?如果项目需要在生产环境中进行大规模的部署,并且对模型的稳定性和生态系统的完整性有较高要求,那么 TensorFlow 可能是一个不错的选择。其完善的工具和库能够帮助开发者快速将模型部署到各种场景中,并确保模型的稳定运行。

如果项目对计算性能有极高的要求,尤其是在处理大规模模型和复杂计算任务时,JAX 可能是更好的选择。其强大的计算能力和自动微分功能,能够在保证性能的同时,提供足够的灵活性,满足研究和实验的需求。

而如果项目注重开发效率和代码的简洁性,尤其是在自然语言处理和计算机视觉等领域进行快速原型开发和实验时,PyTorch 则是一个理想的后端。其简洁的 API 和动态计算图特性,能够让开发者更加专注于模型的设计和实现,快速迭代和优化模型。

三、Keras 3 模型导出

3.1 模型训练与保存

在进行 Keras 3 模型的部署之前,首先需要完成模型的训练和保存。我们以一个简单的神经网络模型为例,来展示如何使用 Keras 3 进行模型的搭建、训练以及保存为 h5 文件的过程。

首先,导入必要的库:

 

import tensorflow as tf</

相关文章:

《Keras 3部署全攻略:从新手到实战高手》

《Keras 3部署全攻略:从新手到实战高手》 一、引言:开启 Keras 3 部署之旅 在深度学习的广阔领域中,Keras 一直以其简洁易用、高度模块化的特性,深受开发者的喜爱,被誉为深度学习的 “福音”。而如今,Keras 3 的强势登场,更是为这个领域注入了全新的活力。它像是一位集…...

如何修改npm的全局安装路径?

修改 npm 的全局安装路径可以通过以下步骤完成&#xff0c;确保全局包&#xff08;使用 -g 安装的模块&#xff09;和缓存文件存储到自定义路径。以下是详细步骤&#xff1a; 1. 创建自定义路径的目录 在目标路径下创建两个文件夹&#xff0c;分别用于存储全局模块和缓存文件…...

计算机网络 | Chapter1 计算机网络和因特网

&#x1f493;个人主页&#xff1a;mooridy-CSDN博客 &#x1f493;文章专栏&#xff1a;《计算机网络&#xff1a;自定向下方法》 大纲式阅读笔记_mooridy的博客-CSDN博客 &#x1f339;关注我&#xff0c;和我一起学习更多计算机网络的知识 &#x1f51d;&#x1f51d; 目录 …...

前端面试 HTML篇

src和href的区别 src和href都是用来加载外部资源&#xff0c;区别如下 src&#xff1a;当浏览器解析到该元素时&#xff0c;会暂停其他资源的加载和处理&#xff0c;直到该资源加载完成。 它会将资源内容嵌入到当前标签所在的位置&#xff0c;将其指向的资源下载应用到文档内…...

Prometheus、Zabbix 和 Nagios 这三个工具的对100个节点的部署设计的信息流

Prometheus 1. 基本组件及角色 Prometheus主要由Prometheus Server、Exporter、Alertmanager和Grafana(可选)等组件构成。 Prometheus Server:负责数据的收集、存储和查询,以及规则的评估。Exporter:部署在被监控节点上,负责收集节点的各种指标数据。Alertmanager:负责…...

Tableau 基础表制作

目录 1.数据连接 2. 数据可视化 3. 基础表制作 3.1 对比分析&#xff1a;比大小 1. 柱状图 2. 条形图 3. 热力图 4. 气泡图 5. 词云 3.2 变化分析&#xff1a;看趋势 1. 折线图 2. 面积图 3.3 构成分析&#xff1a;看占比 1. 饼图 2. 树地图 3. 堆积图 3.4 关…...

openAICEO山姆奥特曼未来预测雄文之三个观察

《三个观察》 山姆奥特曼 这篇文章主要讲的是关于AGI&#xff08;人工通用智能&#xff09;的未来发展及其对社会的影响&#xff0c;用大白话总结如下&#xff1a; 核心观点&#xff1a; AGI是什么&#xff1f; AGI是一种能像人类一样解决各种复杂问题的智能系统&#xff0c;比…...

springboot入门-service层构造器注入原理

在 Spring Boot 中&#xff0c;通过构造器注入的方式将 Repository&#xff08;JPA&#xff09;或 Mapper&#xff08;MyBatis&#xff09;注入到 Service 层的原理及示例如下&#xff1a; 1. 构造器注入的原理 依赖注入&#xff08;DI&#xff09;机制&#xff1a; Spring 容…...

JavaScript 笔记 --- part6 --- JS进阶 (part1)

JS 进阶(part1) 作用域 局部作用域 定义: 局部作用域指的是在函数内部定义的变量&#xff0c;只能在函数内部访问&#xff0c;外部不能访问。 特点: 局部作用域变量只能在函数内部或代码块中访问&#xff0c;外部不能访问。 分类: 函数作用域: 指的是在函数内部定义的变量&…...

使用matplotlib绘制Raincloud图/云雨图/柱状图/小提琴图

需求&#xff1a; 使用Python的matplotlib绘制数据分布、数据箱型图、数据散点图 参考&#xff1a; https://blog.csdn.net/weixin_39559994/article/details/128197965?fromshareblogdetail&sharetypeblogdetail&sharerId128197965&sharereferPC&sharesource…...

BT152-ASEMI机器人率器件专用BT152

编辑&#xff1a;LL BT152-ASEMI机器人率器件专用BT152 型号&#xff1a;BT152 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220F 批号&#xff1a;最新 引脚数量&#xff1a;3 封装尺寸&#xff1a;如图 特性&#xff1a;单向可控硅 工作结温&#xff1a;-40℃~150℃ …...

【Redis——通用命令】

文章目录 Redis为什么快&#xff1f;生产环境的概念Redis中最核心的两个命令get&#xff1a;通过key拿valueset&#xff1a;将key和value存入数据库 其他通用命令keysexist判定key是否存在delexpire&#xff1a;为指定的key设置一个过期时间TTL&#xff08;Time To Live&#x…...

qt之开发大恒usb3.0相机一

1.在大恒相机给的sample里没有看见qt开发的demo. 第一步先运行c sdk中中的demo&#xff0c;看了下代码&#xff0c;大恒使用的UI框架是MFC.然后 vs2022编译。运行结果 第一步&#xff0c;先用qt进行坐下页面布局&#xff0c;如下图&#xff08;保存图片的地方做了些更改&#…...

系列位置效应——AI与思维模型【80】

一、定义 系列位置效应思维模型是指在一系列事物或信息的呈现过程中&#xff0c;人们对于处于系列开头和结尾部分的项目的记忆效果优于中间部分项目的现象。具体而言&#xff0c;开头部分的记忆优势被称为首因效应&#xff0c;结尾部分的记忆优势被称为近因效应。这种效应反映…...

解决conda虚拟环境安装包却依旧安装到base环境下

最近跑项目装包装到几度崩溃&#xff0c;包一直没有安装到正确位置&#xff0c;为此写下这篇文章记录一下&#xff0c;也希望能帮到有需要的人。&#xff08;此文章开发环境为anaconda和window&#xff09; 方法一 先conda deactivate,看到&#xff08;base&#xff09;消失…...

设计看似完美却测不过? Intra-Pair Skew 是「讯号完整性(Signal Integrity)」里最隐形的杀手

各位不知道有没有遇过&#xff0c;一对很长的差分走线&#xff0c;看起来很正常&#xff0c;但是测试结果偶尔会fail偶尔会pass&#xff0c;不像是软件问题&#xff0c;也不像是制程问题。 看了一下Layout&#xff0c;发现阻抗匹配控制的非常好&#xff0c;TDR测试也显示阻抗好…...

使用MyBatis注解方式的完整示例,涵盖CRUD、动态SQL、分页、事务管理等场景,并附详细注释和对比表格

以下是使用MyBatis注解方式的完整示例&#xff0c;涵盖CRUD、动态SQL、分页、事务管理等场景&#xff0c;并附详细注释和对比表格&#xff1a; 项目结构 mybatis-annotation-demo/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com.example/…...

【头脑风暴】加权平均

一些加权平均而不是算术平均的思路&#xff0c;启发来源&#xff1a;ACLS,WACLS。 简单平均假设所有样本的误差和噪声特性相同&#xff0c;但在实际电路中&#xff0c;不同阶段、不同时间点的样本价值&#xff08;对最终精度的贡献&#xff09;是不同的。​​加权平均的核心思想…...

DAM-3B,英伟达推出的多模态大语言模型

DAM-3B是什么 DAM-3B&#xff08;Describe Anything 3B&#xff09;是英伟达推出的一款多模态大语言模型&#xff0c;专门用于为图像和视频中的特定区域生成详细描述。用户可以通过点、边界框、涂鸦或掩码等方式来标识目标区域&#xff0c;从而得到精准且符合上下文的文本描述…...

2025年暨南大学 ACM校赛分析与题解

文章目录 C.最长公共前缀D.排列H.回文串 法不定法&#xff0c;在于因时因势AC不了就是还得加练&#xff01; C.最长公共前缀 字典树模版题目&#xff0c;不了解字典树的同学&#xff0c;可以看我的另一篇博客 算法 之 字典树 class Node: # 和模版题目相似&#xff0c;但是多…...

图像处理——边缘检测

1 概述 边缘检测是图像处理和计算机视觉中的一项基本技术&#xff0c;用于识别图像中亮度变化剧烈的像素点&#xff0c;这些像素点通常对应于物体的边界。它通过检测图像中亮度或颜色变化显著的区域&#xff0c;提取出物体的轮廓&#xff0c;常用于计算机视觉、图像处理和模式识…...

认识哈希以及哈希表的模拟实现

文章目录 1.什么是哈希2.哈希函数2.1 除留余数法/除法散列法2.2 乘法散列法2.3 全域散列法 3.哈希冲突4.解决哈希冲突的方法4.1 开放定址法4.1.1 用除留余数法和线性探测模拟实现简单的哈希表 4.2 链地址法4.2.1 用除留余数法和链地址法模拟实现简单的哈希表 1.什么是哈希 概念…...

【Castle-X机器人】二、智能导览模块安装与调试

持续更新。。。。。。。。。。。。。。。 【Castle-X机器人】智能导览模块安装与调试 二、智能导览模块安装与调试2.1 智能导览模块安装2.2 智能导览模块调试2.2.1 红外测温传感器测试2.2.2 2D摄像头测试 二、智能导览模块安装与调试 2.1 智能导览模块安装 使用相应工具将智能…...

硬件须知的基本问题2

目录 1、典型电路 1. DC5V 转 DC3.3V 电路 2. 通信电路 2、STM32F103RCT6 最小系统如何设计搭建电路 1. 电源电路 2. 复位电路 3. 时钟电路 4. 下载电路 5. 单片机连接连接 3、请列举你所知道的二极管型号&#xff1f; 1. 整流二极管 2. 小信号二极管 3. 肖特基二极管 4. 超…...

Dify 使用 excel 或者 csv 文件创建知识库

Dify 使用 excel 或者 csv 文件创建知识库 1. 创建知识库2. 创建聊天助手3. 其他 1. 创建知识库 创建知识库&#xff0c;导入excel/csv文件&#xff0c; 文件内容&#xff0c; 单击 “预览块”&#xff0c;可以确认会生成多个键值对的块&#xff0c; 配置 Embedding 模型和检索…...

深入理解二叉树遍历:递归与栈的双重视角

二叉树的遍历前序遍历中序遍历后续遍历总结 二叉树的遍历 虽然用递归的方法遍历二叉树实现起来更简单&#xff0c;但是要想深入理解二叉树的遍历&#xff0c;我们还必须要掌握用栈遍历二叉树&#xff0c;递归其实就是利用了系统栈去遍历。特此记录一下如何用双重视角去看待二叉…...

通过gap看margin和padding在布局中的应用

在CSS布局中&#xff0c;控制元素之间的间距有多种方式&#xff1a;margin、padding&#xff0c;还有新晋的gap属性。虽然选择多了&#xff0c;但这也带来了不少头疼的问题。比如&#xff0c;你的自定义组件到底该不该加margin&#xff1f;如果加了&#xff0c;那在使用这个组件…...

图像畸变-径向切向畸变实时图像RTSP推流

实验环境 注意&#xff1a;ffmpeg进程stdin写入两张图片的时间间隔不能太长&#xff0c;否则mediamtx会出现对应的推流session超时退出。 实验效果 全部代码 my_util.py #进度条 import os import sys import time import shutil import logging import time from datetime i…...

2025最新Facefusion3.1.2使用Docker部署,保姆级教程,无需配置环境

Docker部署Facefusion 环境 windows10 Facefusion3.1.2 安装 拉取源代码 git clone https://github.com/facefusion/facefusion-docker.git 此处如果拉不下来&#xff0c;需要科学上网&#xff0c;不会的可以找我。 运行容器 将Dockerfile.cpu文件中的的From python:3.…...

区块链实战:Hyperledger Fabric多节点网络部署与高性能业务链码

一、联盟链架构设计与技术选型 1.1 架构设计原则 联盟链采用​​分层架构​​&#xff0c;包含应用层、共识层、网络层和数据层&#xff1a; ​​应用层​​&#xff1a;提供用户接口&#xff08;Web/API&#xff09;和智能合约交互入口​​共识层​​&#xff1a;采用PBFT或…...

C++学习笔记(四十)——STL之归约算法

STL 算法分类&#xff1a; 类别常见算法作用排序sort、stable_sort、partial_sort、nth_element等排序搜索find、find_if、count、count_if、binary_search等查找元素修改copy、replace、replace_if、swap、fill等修改容器内容删除remove、remove_if、unique等删除元素归约for…...

docker容器运维工具——ctop

概述 Github主页&#xff1a;https://github.com/bcicen/ctop 当服务器上运行多个容器时&#xff0c;迅速查看所有容器运行情况及指标将会大为提高工作效率。ctop工具可以像top命令一样&#xff0c;对所有容器进行总览&#xff0c;并实现简单的操作。 部署 下载&#xff08;…...

RAG vs 微调:大模型知识更新的最优解之争

一、技术本质&#xff1a;知识注入的两条路径 在大模型应用落地的实践中&#xff0c;RAG&#xff08;检索增强生成&#xff09;与微调&#xff08;Fine-tuning&#xff09;已成为知识更新的两大核心技术路径。二者的本质差异在于是否对模型参数进行修改&#xff1a; 维度RAG微…...

FPGA前瞻篇-组合逻辑电路设计-多路复用器

多路选择器&#xff08;MUX&#xff09;简介 基本概念 多路选择器&#xff08;MUX&#xff0c;Multiplexer&#xff09;是一种多输入、单输出的组合逻辑电路。 它通过选择控制信号&#xff0c;在多个输入信号中选择一个连接到输出端。 可以理解为一个多路数字开关。 &…...

Day13(前缀和)——LeetCode2845.统计趣味子数组的数目

1 题目描述 给定一个下标从0开始的数组nums&#xff0c;以及整数modulo和k。找出并统计数组中趣味子数组的数目&#xff1a; 在范围[l,r]内&#xff0c;设cnt为满足nums[i]%modulok的索引i的数量&#xff0c;并且cnt%modulok。子数组是数组中的一个连续非空的元素序列。 其中一…...

WebcamJS中文文档

文章目录 WebcamJS针对Chrome 47及以上版本的重要说明浏览器支持演示示例开源协议快速入门指南配置初始化拍摄照片自定义图像大小裁剪图像翻转图像(镜像模式)冻结/预览图像设置备用SWF文件位置重置(关闭)API 参考自定义事件向服务器提交图像跟踪上传进度包含在现有表单中自…...

论文笔记(八十)π0.5: a Vision-Language-Action Model with Open-World Generalization

π0.5: a Vision-Language-Action Model with Open-World Generalization 文章概括摘要I. 引言II. 相关工作通用机器人操作策略。非机器人数据的协同训练。使用语言进行机器人推理和规划。具有开放世界泛化能力的机器人学习系统。 III. 序言IV. π 0.5 π_{0.5} π0.5​ 模型与…...

pymongo功能整理与基础操作类

以下是 Python 与 PyMongo 的完整功能整理&#xff0c;涵盖基础操作、高级功能、性能优化及常见应用场景&#xff1a; 1. 安装与连接 (1) 安装 PyMongo pip install pymongo(2) 连接 MongoDB from pymongo import MongoClient# 基础连接&#xff08;默认本地&#xff0c;端口…...

硬件须知的基本问题1

目录 1. 电路表示中的电压源表示符号有哪些&#xff1f; 2&#xff0e;查找电路表示中的电流源表示符号有哪些&#xff1f; 3&#xff0e;上拉电阻和下拉电阻的作用是什么&#xff1f; 4&#xff0e;0 欧姆电阻在电路中有什么作用&#xff1f; 5&#xff0e;电容的耦合…...

LangChain 中的 Task(任务) 主要通过 生成器(Generator) 实现,而非传统的迭代器(Iterator)

LangChain 中的 Task&#xff08;任务&#xff09; 主要通过 生成器&#xff08;Generator&#xff09; 实现&#xff0c;而非传统的迭代器&#xff08;Iterator&#xff09;。以下是关键分析&#xff1a; 任务链的流程控制 LangChain 的 链式结构&#xff08;Chains&#xff0…...

加里·基尔代尔:CP/M之父与个人计算时代的先驱

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 加里基尔代尔&#xff1a;CP/M之父与个人计算时代的先驱 一、早年生活与教育背景 1.…...

深入解析Spring Boot配置处理器:机制、架构与实践

深入解析Spring Boot配置处理器&#xff1a;机制、架构与实践 Spring Boot的配置处理器&#xff08;spring-boot-configuration-processor&#xff09;是支撑其智能配置体验的关键组件。本文结合实际开发需求&#xff0c;从使用方式、底层原理到性能优化与架构设计&#xff0c…...

Ragflow新建的知识库完成后刷新却没有显示,报错MethodNotAllowed: 405 Method Not Allowed:

环境: Ragflow17.2 debian12.8 问题描述: Ragflow新建的知识库完成后刷新却没有显示,报错MethodNotAllowed: 405 Method Not Allowed: The method is not allowed for the requested URL. 后台日志: 2025-04-25 13:54:25,988 ERROR 235204 405 Method Not Allowed:…...

Maven进阶知识

一、Maven 坐标 &#xff08;一&#xff09;概念 在 Maven 中坐标是构件的唯一标识&#xff0c;其元素包括 groupId、artifactId、version、packaging、classifier。其中 groupId、artifactId、version 是必定义项&#xff0c;packaging 默认为 jar。 &#xff08;二&#x…...

通过门店销售明细表用SQL得到每月每个门店的销冠和按月的同比环比数据

假设我在Snowflake里有销售表&#xff0c;包含ID主键、门店ID、日期、销售员姓名和销售额&#xff0c;需要统计出每个月所有门店和各门店销售额最高的人&#xff0c;不一定是一个人&#xff0c;以及他所在的门店ID和月总销售额。 统计每个月份下&#xff0c;各门店内销售额最高…...

聊聊Spring AI Alibaba的YuQueDocumentReader

序 本文主要研究一下Spring AI Alibaba的YuQueDocumentReader YuQueDocumentReader community/document-readers/spring-ai-alibaba-starter-document-reader-yuque/src/main/java/com/alibaba/cloud/ai/reader/yuque/YuQueDocumentReader.java public class YuQueDocument…...

Tauri文件系统操作:桌面应用的核心能力(入门系列四)

今天我们来聊聊Tauri中一个超级重要的功能 - 文件系统操作。这可是Web应用和桌面应用最大的区别之一。在浏览器里&#xff0c;出于安全考虑&#xff0c;我们对文件系统的访问被限制得死死的。但在Tauri桌面应用中&#xff0c;我们可以安全地访问用户的文件系统&#xff0c;这简…...

网络流之最大流(Dinic)

正文 在了解了Ford-Fulkerson 和Edmonds-Karp之后&#xff0c;我们可以进一步学习更高效的算法——Dinic。 Dinic算法的时间复杂度是O(VE)&#xff0c;实际运用过程中是比EK算法快的。 特性Ford-FulkersonEdmonds-Karp (EK)Dinic 增广路径选择 任意方式BFS找最短路径分层图多…...

LVGL模拟器:NXP GUIDER+VSCODE

1. 下载安装包 NXP GUIDER&#xff1a;GUI Guider | NXP 半导体 CMAKE&#xff1a;Download CMake MINGW&#xff1a;https://github.com/niXman/mingw-builds-binaries/releases SDL2&#xff1a;https://github.com/libsdl-org/SDL/releases/tag/release-2.30.8 VSCODE&…...

魔幻预言手游》:职业介绍!

在《魔幻预言》手游中&#xff0c;共有武玄、魔魅、剑仙三大核心职业&#xff0c;各具特色且定位鲜明&#xff0c;以下为具体介绍&#xff1a; 一、武玄&#xff08;战士&#xff09; 核心定位&#xff1a;近战物理输出与团队增益担当&#xff0c;兼具控制与防御能力。 战斗风…...