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

深度学习框架对比---Pytorch和TensorFlow

一、计算图与执行模式

1. 图的本质:动态图 vs 静态图
  • PyTorch(动态图,Eager Execution)

    • 运行机制:代码逐行执行,张量操作立即生效,计算图在运行时动态构建。
      x = torch.tensor(1.0, requires_grad=True)
      y = x * 2 + torch.sin(x)  # 实时计算,可直接打印 y 的值
      y.backward()  # 动态反向传播
      
    • 优势
      • 调试如 Python 般直观,可直接查看中间变量值,适合算法快速验证。
      • 天然支持动态逻辑(如循环、条件判断),适合 NLP 动态序列处理、强化学习策略网络。
    • 劣势
      • 静态优化需依赖 torch.jit 编译为 TorchScript,部署时需额外转换。
  • TensorFlow(混合图,TF 2.0+)

    • 传统模式(TF 1.x):先定义静态计算图(Graph),再通过会话(Session)执行,代码与执行分离。
      x = tf.placeholder(tf.float32)
      y = tf.add(tf.multiply(x, 2), tf.sin(x))
      with tf.Session() as sess:print(sess.run(y, feed_dict={x: 1.0}))  # 需显式运行会话
      
    • TF 2.0 动态图模式:默认启用 Eager Execution,支持实时计算,语法接近 PyTorch。
    • 静态图优化:通过 @tf.function 将动态代码编译为静态图,提升性能并支持生产环境部署。
      @tf.function
      def fn(x):return tf.add(tf.multiply(x, 2), tf.sin(x))
      y = fn(tf.constant(1.0))  # 自动编译为静态图执行
      
    • 优势
      • 静态图可提前优化(算子融合、内存分配、XLA 编译),适合高性能推理和分布式训练。
      • 对硬件兼容性更优(如 TPU 仅原生支持 TensorFlow 静态图)。
2. 图的灵活性
  • PyTorch:动态图允许在运行时修改网络结构(如条件分支选择不同层),适合元学习、自适应架构。
  • TensorFlow:静态图需通过 tf.condtf.case 等函数实现动态逻辑,灵活性受限,但 TF 2.0 动态图模式下支持原生 Python 控制流。

二、编程范式与 API 设计

1. 命令式 vs 符号式
  • PyTorch:纯命令式编程,代码即逻辑,符合 Python 开发习惯,适合快速迭代。
  • TensorFlow
    • TF 1.x 以符号式为主,需预先定义完整图结构,学习曲线陡峭。
    • TF 2.0 融合命令式与符号式,通过 tf.function 无缝切换,兼顾开发效率与运行效率。
2. API 风格
  • PyTorch
    • 核心 API 简洁,以张量(torch.Tensor)和模块(torch.nn.Module)为中心,自定义层只需重写 forward 方法。
    • 示例:
      class Net(nn.Module):def __init__(self):super().__init__()self.fc = nn.Linear(10, 1)def forward(self, x):return self.fc(x)
      
  • TensorFlow
    • 提供多层 API 抽象:
      • 低阶 API:基于 tf.Tensortf.keras.layers,灵活性高(类似 PyTorch)。
      • 高阶 API:Keras 接口(tf.keras)支持快速建模,适合新手。
      model = tf.keras.Sequential([tf.keras.layers.Dense(10, input_shape=(None,)),tf.keras.layers.Dense(1)
      ])
      
    • 功能性 API(Functional API)支持复杂模型(如多输入/输出、共享层),但代码比 PyTorch 稍冗长。
3. 自动微分(Autograd)
  • PyTorch
    • 通过 torch.autograd 自动跟踪张量操作,反向传播时自动计算梯度(loss.backward())。
    • 支持自定义梯度(重写 backward 方法),适合研究性场景(如神经辐射场 NeRF)。
  • TensorFlow
    • TF 2.0 引入 tf.GradientTape,通过上下文管理器记录操作并计算梯度,与 PyTorch 逻辑类似。
    with tf.GradientTape() as tape:loss = model(x, y_true)
    grads = tape.gradient(loss, model.trainable_variables)
    
    • 静态图模式下,梯度计算需通过图优化实现,调试不如 PyTorch 直观。

三、生态系统与工具链

1. 研究与开发工具
  • PyTorch
    • 数据处理torchvision(CV)、torchtext(NLP)、torchdata(通用数据管道)。
    • 模型库:Hugging Face Transformers(NLP)、Detectron2(CV)、PyTorch Lightning(轻量化训练框架)。
    • 调试工具
      • pdb 直接调试,print(tensor) 查看值。
      • torch.autograd.grad_check 验证梯度正确性。
      • TensorBoard 集成(需 torch.utils.tensorboard)。
  • TensorFlow
    • 数据处理tf.data.Dataset 支持高效异步加载、预处理(如并行解码、数据增强)。
    • 模型库:Keras Applications(预训练模型)、TensorFlow Hub(可复用模块)、TensorFlow Model Garden(官方模型库)。
    • 调试工具
      • TensorBoard 原生支持,功能更全面(计算图可视化、分布式训练监控)。
      • tf.debugging 模块(如 tf.assert_equaltf.print)用于静态图调试。
2. 部署与生产环境
  • PyTorch
    • 模型导出
      • TorchScript(.pt/.pth):通过 torch.jit.scripttorch.jit.trace 转换为静态图,支持 C++/Java 部署。
      • ONNX:通用格式,可转换至 TensorRT、OpenVINO 等推理引擎。
    • 生产部署:依赖第三方库如 torchserve(轻量级服务器),或通过 ONNX 桥接至其他生态。
    • 移动端Torch Mobile 支持 iOS/Android,但算子覆盖度不如 TF Lite。
  • TensorFlow
    • 全平台支持
      • TensorFlow Serving:高性能模型服务器,支持 REST/gRPC、版本管理、批处理。
      • TF Lite:轻量级推理框架,支持手机、IoT(如 Arduino),提供模型量化工具(Post-training Quantization)。
      • TF JS:浏览器端推理,适合 Web 应用。
      • TF Extended (TFX):端到端流水线,涵盖数据预处理、训练、验证、部署,适合企业级 MLOps。
    • 模型格式
      • SavedModel:包含计算图和权重,支持跨语言加载(Python/C++/Java)。
      • HDF5(通过 Keras):适合轻量级存储,但需依赖 Python 环境。
3. 分布式训练
  • PyTorch
    • 原生支持
      • torch.distributed 模块,支持数据并行(DistributedDataParallel)、模型并行。
      • 启动方式:torch.distributed.launchtorchrun
    • 第三方库:Horovod(Uber 开源,支持多框架)、DeepSpeed(微软,优化大模型训练)。
  • TensorFlow
    • 原生策略
      • tf.distribute.Strategy API,支持多种模式:
        • MirroredStrategy:单机多卡数据并行(GPU 镜像同步)。
        • MultiWorkerMirroredStrategy:多机多卡数据并行。
        • TPUStrategy:原生支持 TPU 集群。
    • 优势:无需额外库,与 TPU/GCP 深度集成,适合大规模分布式训练(如 GPT-3 级别模型)。

四、性能与优化

1. 训练性能
  • 小规模模型:PyTorch 动态图调试便捷,训练速度接近 TensorFlow。
  • 大规模模型/分布式训练
    • TensorFlow 静态图 + XLA(加速线性代数)优化更优,尤其在 TPU 上性能显著领先。
    • PyTorch 通过 torch.compile(2.0+)引入 AOT 编译(如使用inductor 后端),逐步缩小与 TensorFlow 的差距。
2. 推理性能
  • TensorFlow
    • TF Lite/JS/XLA 针对低延迟、高吞吐场景优化,支持算子融合和量化(如 FP16/INT8 推理)。
    • 示例:在手机端,TF Lite 模型启动速度和内存占用优于 PyTorch Mobile。
  • PyTorch
    • 通过 TorchScript + TensorRT 优化推理性能,但需手动配置,适合高端 GPU 部署(如数据中心)。
3. 内存管理
  • PyTorch
    • 自动垃圾回收(基于 Python 的引用计数),但复杂场景需手动释放显存(torch.cuda.empty_cache())。
    • 动态图导致内存分配碎片化,大模型训练可能出现 OOM(Out of Memory)。
  • TensorFlow
    • 静态图提前分配内存,显存管理更高效,适合训练超大规模模型(如参数超过 100B 的语言模型)。
    • 支持显存增长控制(tf.config.experimental.set_memory_growth),避免占用全部 GPU 内存。

五、模型开发与维护

1. 模型保存与加载
  • PyTorch
    • 通常保存 状态字典(state_dict),仅存储权重,轻量且灵活:
      torch.save(model.state_dict(), 'model.pth')
      model.load_state_dict(torch.load('model.pth'))
      
    • 缺点:需保存模型结构代码,跨版本兼容性可能问题(如类定义变更)。
  • TensorFlow
    • 保存 完整模型(含结构和权重):
      model.save('model.h5')  # Keras 格式
      model = tf.keras.models.load_model('model.h5')
      
    • SavedModel 格式(二进制协议缓冲区)支持语言无关加载,适合生产环境。
2. 自定义算子
  • PyTorch
    • 通过 torch.autograd.Function 自定义正向/反向传播逻辑,支持 Python/C++ 扩展。
    • 示例:实现自定义激活函数的反向梯度:
      class MyReLU(torch.autograd.Function):@staticmethoddef forward(ctx, x):ctx.save_for_backward(x)return x.clamp(min=0)@staticmethoddef backward(ctx, grad_output):x, = ctx.saved_tensorsreturn grad_output * (x > 0).float()
      
  • TensorFlow
    • 低阶 API 中通过 tf.RegisterGradient 注册自定义梯度,或用 C++ 编写 OP 并编译为共享库。
    • TF 2.0 支持用 tf.function 包裹 Python 自定义逻辑,但性能可能低于原生 OP。
3. 混合精度训练
  • PyTorch
    • 原生支持 torch.cuda.amp,通过 autocast 上下文自动混合 FP16/FP32 计算,减少显存占用。
  • TensorFlow
    • Keras 接口支持 MixedPrecisionPolicy,自动选择 FP16/FP32 算子,与 XLA 结合优化效果更佳。

六、社区与学习资源

1. 社区生态
  • PyTorch
    • 研究导向,顶会论文(如 NeurIPS、ICML)代码实现多基于 PyTorch,社区贡献活跃(GitHub 星标超 90k)。
    • 适合场景:学术研究、快速原型开发、动态网络结构(如强化学习、生成模型)。
  • TensorFlow
    • 工业界主导,企业级应用广泛(如 Google 搜索、推荐系统、自动驾驶),生态成熟稳定。
    • 适合场景:大规模数据处理、生产部署、跨平台应用(Web/移动端/IoT)。
2. 学习曲线
  • PyTorch:入门门槛低,API 设计符合 Python 直觉,适合新手快速上手。
  • TensorFlow:TF 2.0 简化后学习曲线接近 PyTorch,但静态图、分布式训练等高级特性仍需深入理解。
3. 文档与教程
  • PyTorch
    • 官方文档简洁,教程侧重案例(如 MNIST 分类、Transformer 实现)。
    • 第三方资源丰富:fast.ai 课程、PyTorch 官方博客。
  • TensorFlow
    • 文档详尽但复杂,Keras 高阶 API 教程适合快速建模,低阶 API 需结合数学推导学习。
    • 官方资源:TensorFlow 开发者证书、Google Colab 示例。

七、其他关键差异

1. 硬件支持
  • PyTorch
    • 原生支持 GPU/CPU,通过第三方库(如 torch_xla)支持 TPU,但成熟度不如 TensorFlow。
  • TensorFlow
    • 深度集成 Google 硬件(TPU/GPU),TPU 仅原生支持 TensorFlow 静态图,推理优化更优。
2. 许可证
  • PyTorch:BSD 许可证,商业使用宽松,适合开源项目。
  • TensorFlow:Apache 2.0 许可证,同样允许商业使用,但 Google 专利条款需注意。
3. 动态形状支持
  • PyTorch:动态图天然支持任意输入形状(如变长序列),无需预先定义维度。
  • TensorFlow:静态图需指定输入形状(或使用 None 表示动态维度),否则可能报错。

总结:核心差异与选型建议

维度PyTorchTensorFlow
核心优势动态图灵活调试、研究友好、代码简洁静态图优化、工业级部署、多平台支持
适合场景学术研究、动态网络、快速原型生产落地、大规模训练、跨设备部署
学习门槛低(Python 友好)中(TF 2.0 简化,静态图需额外学习)
大模型训练依赖 DeepSpeed/Horovod原生支持 TPUStrategy,优化成熟
移动端推理Torch Mobile(算子较少)TF Lite(算子全、优化佳)
生态活跃度研究社区主导,新算法迭代快企业生态完善,长期维护稳定
选型建议
  • 选 PyTorch
    • 从事 NLP、CV 前沿研究(如大语言模型、扩散模型)。
    • 需要动态图调试或自定义复杂梯度逻辑。
    • 优先考虑开发效率和代码可读性。
  • 选 TensorFlow
    • 模型需部署到移动端、嵌入式设备或 Web。
    • 处理大规模结构化数据(如推荐系统、日志分析)。
    • 使用 Google 云服务(GCP)或依赖 TPU 加速。
趋势

两者正逐步融合(如 PyTorch 加强编译优化,TensorFlow 动态化),未来可能形成“研究用 PyTorch,部署用 TensorFlow”的互补生态。建议开发者根据项目需求掌握其一,并了解另一框架的基础逻辑,以适应技术变化。

相关文章:

深度学习框架对比---Pytorch和TensorFlow

一、计算图与执行模式 1. 图的本质:动态图 vs 静态图 PyTorch(动态图,Eager Execution) 运行机制:代码逐行执行,张量操作立即生效,计算图在运行时动态构建。x torch.tensor(1.0, requires_gra…...

antdv3 Tabs.TabPane 右上角增加一个角标Badge

1、Tabs官方说明 Ant Design Vue — An enterprise-class UI components based on Ant Design and Vue.js 2、Badge角标官方效果图 Ant Design Vue — An enterprise-class UI components based on Ant Design and Vue.js 3、Tabs.TabPane要实现的效果 4、代码 <Tabs v-m…...

Python-88:英雄升级奖励

问题描述 在一个游戏中&#xff0c;小W拥有 n 个英雄&#xff0c;每个英雄的初始能力值均为 1。她可以通过升级操作来提升英雄的能力值&#xff0c;最多可以进行 k 次升级。 每次升级操作包含以下步骤&#xff1a; 选择一个英雄选择一个正整数 x将该英雄的能力值 aiai​ 更新…...

使用uv创建python项目

uv创建项目 uv init -p 3.12 qwen3env # -p 指定python版本 # qwen3env是项目名称 # 可以使用下面的步骤 mkdir qwen3env cd qwen3env uv venv -p3.12 .venv # 基于 Python 3.12 创建名为 .venv 的虚拟环境 uv init第一种方式 第二种方式 内容如下 执行python脚本 uv ru…...

window 显示驱动开发-命令和 DMA 缓冲区简介

命令和 DMA 缓冲区非常相似。 但是&#xff0c;命令缓冲区由用户模式显示驱动程序使用&#xff0c;DMA 缓冲区由显示微型端口驱动程序使用。 命令缓冲区具有以下特征&#xff1a; 它永远不会由 GPU 直接访问。 硬件供应商控制格式。 它从呈现应用程序的专用地址空间中的常规…...

深光-谷歌TV TADA/奈飞Netflix/亚马逊Prime Video/YouTube等测试外包服务

一、谷歌TV TADA测试服务 1.CTS CTS测试是一系列旨在确保设备与Android操作系统兼容性的自动化测试&#xff0c;CTS是所有测试项中测试量最大的一项测试。 2.GTS GTS测试是确保Android设备能够正确集成和运行Google Mobile Services&#xff08;GMS&#xff09;的关键步骤&am…...

《教育退费那些事儿:从困境到破局》

《教育退费那些事儿&#xff1a;从困境到破局》 教育退费&#xff1a;不容忽视的热点问题 在当今社会&#xff0c;教育消费已成为家庭支出的重要组成部分。无论是 K12 阶段的学科辅导、艺术特长培训&#xff0c;还是成人的职业技能提升、学历继续教育&#xff0c;家长和学生们…...

AtCoder 第405场初级竞赛 A~E题解

A Is it rated? 【题目链接】 原题链接:A - Is it rated? 【考点】 嵌套判断 【题目大意】 有两个分区,有不同的评分区间,给一个评分 r 和分区 x,判断是否在评分区间中。 【解析】 先判断在属于哪个分区,再判断是否在该分区评分区间中。 【难度】 GESP一级 【…...

登录接口中图片验证码Tesseract-OCR识别Java脚本

项目上移植了研发部的产品&#xff0c;文档不全&#xff0c;项目上验证码功能无法关闭&#xff0c;又要做接口/性能测试&#xff0c;开发不配合&#xff08;作为测试多么无奈&#xff09;&#xff0c;此方法识别命中率不高&#xff0c;仅作借鉴。 版本JDK11 import io.restass…...

专项智能练习(定义判断)_DA_02

2. 单选题 虚假同感偏差也叫虚假一致性偏差&#xff0c;是指人们常常会高估或夸大自己的信念、判断及行为的普遍性。在认知他人时总喜欢把自己的特性赋予他人身上&#xff0c;假定他人与自己是相同的&#xff0c;而当遇到与此相冲突的信息时&#xff0c;会坚信自己信念和判断的…...

安卓A15系统实现修改锁屏界面默认壁纸功能

最近遇到一个A15系统项目&#xff0c;客户要求修改锁屏界面的默认壁纸&#xff0c;客户提供了一张壁纸图片&#xff0c;但是从A15系统的源代码查看时才知道谷歌已经去掉了相关的代码&#xff0c;已经不支持了&#xff0c;A13和A14系统好像是支持的&#xff0c;A15系统的Wallpap…...

Linux之Yum源与Nginx服务篇

1.Yum源知识理论总结概括 Yum源概述 Yum 源 即软件仓库的标识&#xff0c;里面承载着软件包集合 Yum源组成 包含模块 【OS】、【everything】、【EPOL】、【debuginfo】、【source】、【update-source】 【os】:简称operator system 它内部包含操作系统的核心组件&#x…...

帧差法识别

定义&#xff1a; 视频通过闪过x帧画面来实现&#xff0c;帧差法就是利用两帧之间的差异找出。也就是移动目标识别 帧差法识别步骤&#xff1a; 1、灰度处理&#xff1a;将多通道变成双通道压缩图像数据。 cvtColor(before_frame,before_gray,CV_RGB2GRAY);cvtColor(after_f…...

游戏引擎学习第282天:Z轴移动与摄像机运动

运行游戏&#xff0c;展示目前进展 我们目前正在进行一个游戏开发项目。昨天&#xff0c;我们实现了基于房间的角色移动系统&#xff0c;并且加入了摄像机的跟随滚动功能。这是我们首次进入“游戏逻辑设计”阶段&#xff0c;也就是说&#xff0c;我们开始构建游戏本身的行为和…...

解决:npm install报错,reason: certificate has expired

目录 1. 问题分析2. 问题解决2.1 查看配置的镜像2.2 修改镜像源 种一棵树最好的时间是10年前&#xff0c;其次就是现在&#xff0c;加油&#xff01; --by蜡笔小柯南 1. 问题分析 启动前…...

C++ 基础知识点

1、指针和引用的区别 指针&#xff1a;是一个变量&#xff0c;存储的是另一个变量的内存地址&#xff0c;可以被重新赋值指向不同的对象&#xff0c;允许为 nullptr。 指针的特性&#xff1a; 独立变量&#xff0c;存储内存地址 可重新赋值指向其他对象 支持空值&#xff08;n…...

线代第二章矩阵第九、十节:初等变换、矩阵的标准形、阶梯形与行最简阶梯形、初等矩阵

文章目录 初等变换初等行变换初等列变换 矩阵的标准型阶梯形与行最简阶梯形阶梯型矩阵行简化阶梯形 初等矩阵定义性质初等矩阵和初等变换的联系 本节非常重要 初等变换 初等变换使用"→"&#xff0c;而不是"" 初等行变换 ① 交换两行 ② 非0数乘以某一…...

新能源汽车制动系统建模全解析——从理论到工程应用

《纯电动轻卡制动系统建模全解析&#xff1a;车速-阻力拟合、刹车力模型与旋转质量转换系数优化》 摘要 本文以纯电动轻卡为研究对象&#xff0c;系统解析制动系统建模核心参数优化方法&#xff0c;涵盖&#xff1a; 车速-阻力曲线拟合&#xff08;MATLAB实现与模型验证&…...

初始化一个Springboot项目

初始化一个Springboot项目 文章目录 初始化一个Springboot项目1、新建项目2、配置yml3、自定义异常4、通用相应类5、全局跨域配置6、总结 1、新建项目 首先&#xff0c;我们需要创建一个新的 Spring Boot 项目。这里我们使用 IntelliJ IDEA 作为开发工具&#xff0c;它提供了方…...

Springboot考研信息平台

Springboot考研信息平台 文章目录 Springboot考研信息平台1、技术栈2、项目说明3、项目截图4、核心代码4.1、前端核心代码4.2、后端核心代码 1、技术栈 前端 Vue 是一套用于构建用户界面的渐进式 JavaScript 框架。 Vue 作为前端核心框架&#xff0c;提供了响应式的数据绑定和高…...

Spring 框架 JDBC 模板技术详解

一、JDBC 模板技术概述 在传统 JDBC 开发中&#xff0c;开发人员需要手动处理数据库连接&#xff08;Connection&#xff09;、事务管理、语句执行&#xff08;Statement&#xff09;和结果集&#xff08;ResultSet&#xff09;等繁琐操作&#xff0c;不仅代码冗余度高&#x…...

Console Importer浏览器插件的编译 及 制作成.crx浏览器插件的步骤

近日由于下载Console Importer浏览器插件(一个前端调试窗口方便引下第三方库便于学习测试的插件)找不到资源&#xff0c;于是找到该插件的源码&#xff0c;地址&#xff1a;https://github.com/pd4d10/console-importer&#xff09;&#xff0c;发现该插件基于一款名为“Plasmo…...

ArcGIS切片方案记录bundle文件

文章目录 前言一、导入底图二、生成切片方案三、导出切片方案总结 前言 切片的作用是让前端可以访问地图的Mapsever来加载底图。arcgis切片是测绘人员或者WebGIs人员需要认识到的操作。 一、导入底图 首先10.8的ArcGis&#xff0c;这里没有Pro&#xff0c;Pro其实也是一样的操…...

山东大学计算机图形学期末复习6——CG10下

##CG10下 将世界坐标中的任意点 P P P 变换到以相机为中心的“观察坐标系”下&#xff08;右手坐标系&#xff09; n \mathbf{n} n&#xff1a;从相机眼睛朝向观察点的反方向&#xff0c;代表“前方”&#xff1b; u \mathbf{u} u&#xff1a;观察坐标系的 x 轴&#xff0c;向…...

【Spring Cloud Gateway】Nacos整合遇坑记:503 Service Unavailable

一、场景重现 最近在公司进行微服务架构升级&#xff0c;将原有的 Spring Cloud Hoxton 版本升级到最新的 2021.x 版本&#xff0c;同时使用 Nacos 作为服务注册中心和配置中心。在完成基础框架搭建后&#xff0c;我使用 Spring Cloud Gateway 作为API 网关&#xff0c;通过 N…...

[Linux]从零开始的STM32MP157 Busybox根文件系统测试及打包

一、前言 在上一篇教程中&#xff0c;我们成功编译了Busybox根文件系统并且能够正常使用&#xff0c;但是大家应该也发现了我们构建的根文件系统存在许多问题&#xff0c;比如一些找不到文件的报错。并且在实际的产品中一般都是将根文件系统烧录到EMMC中&#xff0c;并不是像我…...

【Pandas】pandas DataFrame eval

Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...

考研408《计算机组成原理》复习笔记,第二章(2)数值数据的表示和运算(浮点数篇)

一、回顾定点数知识点 ——定点小数机器码表示 ——定点整数机器码表示 ——【原码】和【移码】的作用 二、浮点数表示 1、概念引入 我们生活中有很多 “带小数”&#xff0c;也就是浮点数&#xff0c;也就是【整数部分】和【纯小数部分】都不为0&#xff0c;那么这样的小数…...

【虚幻引擎】UE5独立游戏开发全流程(商业级架构)

本套课程我将会讲解一下知识 1.虚幻引擎的常用功能节点、模块包含但不限于动画模块、UI模块、AI模块、碰撞模块、伤害模块、背包模块、准心模块、武器模块、可拾取物品模块、死亡等模块。 2.整个游戏的设计思路&#xff08;游戏架构&#xff09;&#xff0c;本套教程讲解了如…...

大语言模型 08 - 从0开始训练GPT 0.25B参数量 - MiniMind 单机多卡 torchrun deepspeed

写在前面 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是目前最广泛应用的大语言模型架构之一&#xff0c;其强大的自然语言理解与生成能力背后&#xff0c;是一个庞大而精细的训练流程。本文将从宏观到微观&#xff0c;系统讲解GPT的训练过程&#xff0c;…...

使用gitbook 工具编写接口文档或博客

步骤一&#xff1a;在项目目录中初始化一个 GitBook 项目 mkdir mybook && cd mybook git init npm init -y步骤二&#xff1a;添加书籍结构&#xff08;如 book.json, README.md&#xff09; echo "# 我的书" > README.md echo "{}" > bo…...

Mysql视图详解

文章目录 1、视图简介 && 前置准备2、基本crud语法3、检查选项&#xff08;with check option&#xff09;CASCADEDLOCAL总结 4、视图更新限定条件 1、视图简介 && 前置准备 视图 (View) 是一种虚拟存在的表。视图中的数据并不在数据库中实际存在&#xff0c;…...

leetcode 56. 合并区间

题目描述 代码&#xff1a; class Solution {struct Interval{int left;int right;Interval(int l0,int r0):left(l),right(r){}bool operator<(const Interval& rhs) const{return left<rhs.left;}};public:vector<vector<int>> merge(vector<vecto…...

Mac 环境下 JDK 版本切换全指南

概要 在 macOS 上安装了多个 JDK 后&#xff0c;可以通过系统自带的 /usr/libexec/java_home 工具来查询并切换不同版本的 Java。只需在终端中执行 /usr/libexec/java_home -V 列出所有已安装的 JDK&#xff0c;然后将你想使用的版本路径赋值给环境变量 JAVA_HOME&#xff0c;…...

【生活相关-日语-日本-东京-搬家后-引越(ひっこし)(3)-踩坑点:国民健康保险】

【生活相关-日语-日本-东京-搬家后-引越&#xff08;ひっこし&#xff09;&#xff08;3&#xff09;-注意点&#xff1a;国民健康保险】 1、前言2、情况说明&#xff08;1&#xff09;问题说明&#xff08;2&#xff09;情况说明&#xff08;1&#xff09;收到情况&#xff08…...

C++ asio网络编程(6)利用C11模拟伪闭包实现连接的安全回收

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、智能指针管理Session二、用智能指针来实现Server的函数1.start_accept()1.引用计数注意点2.std::bind 与异步回调函数的执行顺序分析 2.handle_accept1.异步…...

【视频】解决FFmpeg将RTSP转RTMP流时,出现的卡死、出错等问题

1、简述 如果不修改图像内容,可以使用FFmpeg命令来将RTSP转RTMP流。 SRS视频服务器就是这么干的,它没有使用FFmpeg接口,而是直接使用FFmpeg命令来转流。 但是在使用中,约到了一些问题,比如转流时卡死、转流出错等等,下面描述怎么解决这些问题 2、出错重启 在shell脚本…...

飞牛NAS本地部署开源TTS文本转语音工具EasyVoice与远程使用流程

文章目录 前言1. 环境准备2. Docker部署与运行3. 简单使用测试4. 安装内网穿透4.1 开启ssh连接安装cpolar4.2 创建公网地址 5. 配置固定公网地址总结 前言 本文主要介绍如何在fnOS飞牛云NAS使用Docker本地部署一款非常好用的开源TTS文本转语音工具EasyVoice&#xff0c;并结合…...

​​STC51系列单片机引脚分类与功能速查表(以STC89C52为例)​

​​1. 基本I/O端口​​ ​​端口​​​​引脚范围​​​​类型​​​​主要功能​​​​特殊说明​​​​P0​​P0.0~P0.7​​开漏双向I/O​​1. 通用I/O&#xff08;需外接上拉电阻&#xff09; 2. 数据总线&#xff08;D0-D7&#xff09; 3. 低8位地址总线&#xff08;A0-A…...

recvfrom和sendto函数中地址参数的作用

在 UDP 通信中&#xff0c;recvfrom 和 sendto 函数中的地址参数起着至关重要的作用。 以下是对这两个函数中地址参数的作用、所属方以及缺失地址时的后果的详细解释。 recvfrom 函数 int recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_add…...

运维职业发展思维导图

主要内容如下: 一、 初级入行阶段 这是职业生涯的起点,主要涉及基础技能的学习和实践。 Linux初学: 重点是学习Linux系统的基础命令和操作。IDC机房运维: 负责数据中心机房内设备的管理和日常维护工作。Helpdesk桌面运维: 提供桌面技术支持,帮助用户解决遇到的计算机软硬…...

【数据处理】Python对CMIP6数据进行插值——详细解析实现(附源码)

目录 Python对CMIP6数据进行插值一、引言代码概览思维导图 二、数据预处理三、数据区域裁剪四、插值&#xff08;一&#xff09; 垂直插值&#xff08;二&#xff09; 水平插值 五、保存插值好的文件六、文件合并与气候态计算七、代码优化技巧八、多线程处理九、全部代码 Pytho…...

worldquant rank函数

https://support.worldquantbrain.com/hc/en-us/community/posts/13869304934935-%E6%80%8E%E6%A0%B7%E7%90%86%E8%A7%A3rank%E5%87%BD%E6%95%B0 链接。进的话可以填我的邀请码JS34795我可以带你 现在学习rank函数 我们所说的做多和做空 首先&#xff0c;当我们讨论Long和S…...

工业4.0神经嫁接术:ethernet ip转profinet协议通信步骤图解

在现代工业自动化领域&#xff0c;不同品牌的设备和协议之间的兼容性问题一直是个挑战。我们的包装线项目就遇到了这样的难题&#xff1a;需要将Rockwell Allen-Bradley的EtherNet/IP伺服系统与西门子PLC的PROFINET主站进行无缝对接。为了解决这一问题&#xff0c;我们采用了et…...

数据库——数据操作语言DML

&#xff08;2&#xff09;数据操作语言DML 简称DML——Data Manipulation Language用来对数据库中表的记录进行更新关键字&#xff1a;insert,delete,update A、 插入表记录 向表中插入数据 格式&#xff1a;insert into 表名(字段1,字段2,字段3……) values(值1,值2,值3);…...

文件防泄密的措施有哪些?

文件防泄密措施需要从技术、管理和物理三个层面综合施策&#xff0c;以下为常见措施分类整理&#xff1a; 一、技术防护措施 华途加密技术 文件加密&#xff1a;使用AES、RSA等算法对敏感文件加密。 传输加密&#xff1a;通过SSL/TLS、VPN保障传输安全&#xff0c;禁止明文传…...

C++ Mac 打包运行方案(cmake)

文章目录 背景动态库梳理打包方案静态库处理动态库处理(PCL库)编译链接动态库后处理逻辑 批量信任 背景 使用C编写的一个小项目&#xff0c;需要打包成mac下的可执行文件&#xff08;免安装版本&#xff09;&#xff0c;方便分发给其他mac执行&#xff0c;需要把项目的动态库都…...

数学复习笔记 10

前言 我觉得数学的高分乃至满分属于那些&#xff0c;聪明&#xff0c;坚韧&#xff0c;勇敢&#xff0c;细致的人。我非常惭愧自己不是这样的人&#xff0c;我在生活中发现了这样的同学&#xff0c;和他们交流的时候我常常感到汗流浃背&#xff0c;因为他们非常扎实的基础知识…...

Oracle-相关笔记

Oracle Database Online Documentation 11g 连接 WinR sqlplus username/passwordhostname:port/service_namesqlplus user02/123456192.xxx:1521/orclsqlplus / as sysdba #SQL*Plus 終端编码使用UTF-8 chcp 65001#打开SQL*Plus程序 sqlplus /nolog#使用dba角色登录(用 1.…...

mac安装cast

背景 pycharm本地运行脚本时提示cast没有安装 问题原因 脚本尝试调用cast命令&#xff08;以太坊开发工具foundry中的子命令&#xff09;&#xff0c;但您的系统未安装该工具。 从日志可见&#xff0c;错误发生在通过sysutil.py执行shell命令时。 解决方案 方法1&#xf…...