pytorch的发展历史,与其他框架的联系
我一直是这样以为的:pytorch的底层实现是c++(这一点没有问题,见下边的pytorch结构图),然后这个部分顺理成章的被命名为torch,并提供c++接口,我们在python中常用的是带有python接口的,所以被称为pytorch。昨天无意中看到Torch是由lua语言写的,这让我十分震惊,完全颠覆了我的想象。所以今天准备查找并记录一下pytorch的发展历史,与其他框架的联系。当然以下列举的部分难以面面俱到,如果您知道哪些有意思的相关知识,请在评论区评论。
pytorch结构图

- 图片来源 https://golden.com/wiki/PyTorch-NMGD4Y4,如果你想了解有关PyTorch 中的自动微分,PyTorch 基金会的相关信息,可以点进去看一下。
发展历史
pytiorch ,如果您想了解pytorch的技术新闻可点击pytorch的官方博客。2016年10月,PyTorch开始作为Adam Paszke的实习项目。
Torch (基础)
Torch 是一个Facebook的开源机器学习库、一个科学计算框架和一种基于 Lua 编程语言的脚本语言。它于2002年10月首次发布。Torch的开发于2017年转移到PyTorch。
同时期的学习框架还有MATL AB和OpenNN等。MATL AB是由美国MathWorks公司出品的一种用于算法开发、数据分析以及数值计算的高级技术计算语言和交互式环境。OpenNN开发于2003年在国际工程数值方法中心的名为RAMFLOOD的项目中是一个使用C++编写的开源类库。OpenNN的主要优点是其高性能。该库在执行速度和内存分配方面非常出色。它不断优化和并行化,以最大限度地提高其效率。并且Torch的论文中也提到了Matlab:Torch7: A Matlab-like Environment for Machine Learning,Neural Information Processing Systems. 2011.。
Caffe(声明式编程风格)
Caffe(https://github.com/BVLC/caffe)是以C++/CUDA代码为主的深度学习框架,需要进行编译安装,支持命令行、Python和MATLAB接口、单机多卡、多机多卡使用。Caffe的全称是:Convolutional architecture forfast feature embedding,它是一个清晰、高效的深度学习框架。
Caffe是一款知名的深度学习框架,由加州大学伯克利分校的贾扬清博士于2013年在Github上发布。Caffe2018 于 21 年 2022 月底并入 PyTorch。并且在pytorch的开源项目中可以看到名为caffe2的文件夹。

Caffe 遵循了神经网络的一个简单假设——所有的计算都是以layer(如relu_layer:https://github.com/BVLC/caffe/blob/2a1c552b66f026c7508d390b526f2495ed3be594/src/caffe/layers/relu_layer.cpp)的形式表示的,layer做的事情就是处理一些数据,然后输出一些计算以后的结果。比如说卷积,就是输入一个图像,然后和这一层的参数(filter)做卷Captain Jack积,然后输出卷积的结果。每一个layer需要做两个计算:1,Forward是从输入计算输出。2,Backward是从上面给的gradient来计算相对于输入的gradient。只要这两个函数实现了以后,我们就可以把很多层连接成一个网络,这个网络做的事情就是输入我们的数据(图像或者语音等),然后来计算我们需要的输出(比如说识别的label),在training的时候,我们可以根据已有的label来计算loss和gradient,然后用gradient来update网络的参数,这个就是Caffe的一个基本流程。
这是一个官方的caffee的例子:https://github.com/BVLC/caffe/tree/master/examples/mnist ,需要用我们熟悉并使用Google Protobuf定义网络,定义 MNIST 求解器。Caffe通过“blobs”即以4维数组的方式存储和传递数据。Blobs提供了一个统一的内存接口,用于批量图像(或其它数据)的操作,参数或参数更新。Models是以Google Protocol Buffers的方式存储在磁盘上。大型数据存储在LevelDB数据库中。Caffe保留所有的有向无环层图,确保正确的进行前向传播和反向传播。Caffe模型是终端到终端的机器学习系统。一个典型的网络开始于数据层,结束于loss层。通过一个单一的开关,使其网络运行在CPU或GPU上。在CPU或GPU上,层会产生相同的结果。在使用上,caffe(c++)的使用需要进行复杂的编译操作(相比后来的pytorch),所以在caffe流行的时期,有时一个实验室中使用的caffe还是上一届的师兄安装的。但是现在仍有许多论文使用caffee框架,知乎上也有问题:caffe停更这么多年,为何现在还有一些论文开源代码还是使用caffe?
这里引用一下Captain Jack的回答:经典的数据结构先行的程序架构。
- 整个caffe都是围绕那个 prototxt 定义来实现的。
- 没有太多额外的系统方向的代码,项目结构清晰,比如:分布式、跨平台、通讯、动态dispatch等等。
- 和现在的框架比,那就是最小可用产品。
- 历史占用率高。
所以,
- 改代码容易,你改改 PyTorch、掏粪 试试。
- 作为一个数据格式的标准,转换比较容易,到现在 onnx 也就和 caffe 的 prototxt 打平手。很多私有、商业实现还是以 caffe 格式支持为准。
- 可能是最重要的:熟悉了懒得学新的,改改caffe又不是不能用。
Theano(创新观点)
Theano(https://github.com/Theano/Theano)是一个Python库和优化编译器的开源项目, 用于操作和评估数学表达式,尤其是矩阵值表达式。其计算是使用NumPy语法表示,并且编译后可在CPU/GPU架构上高效运行。
Theano多年来引入很多创新并已被其他框架采用和完善。例如,能够将模型表示为数学表达式,重写计算图以获得更好的性能和内存使用,在GPU上透明执行,高阶自动微分都已成为主流思想。
Keras是一个由Python编写的开源人工神经网络库,可以作为Tensorflow、Microsoft-CNTK和Theano的高阶应用程序接口。
CG
-
深度学习软件比较https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software
-
[源码解析] PyTorch 分布式(1)------历史和概述 https://www.cnblogs.com/rossiXYZ/p/15496268.html
-
https://alexmoltzau.medium.com/pytorch-governance-and-history-2e5889b79dc1
-
宣布成立 PyTorch 基金会:尖端 AI 框架的新时代 2022.12 https://ai.meta.com/blog/pytorch-foundation/
-
LUA Torch 回忆录 https://zhuanlan.zhihu.com/p/380924980?utm_id=0
-
https://en.wikipedia.org/wiki/Torch_(machine_learning)
-
如何评价 Theano?
h ttps://www.zhihu.com/question/35485591 -
Chainer是一个开源的深度学习框架, 完全在NumPy和CuPy Python库
的基础上用Python编写,因其采用边运行边定义方案以及在大型系统上的性 -
Theano实现了非常先进的优化技术来优化完整的计算图。它将代数的各个方面与优化编译器的各个方面相结合。图形的一部分可以编译成 C 语言代码。对于重复计算,评估速度至关重要,Theano通过生成非常有效的代码来达到此目的。 https://www.tutorialspoint.com/theano/theano_computational_graph.htm
-
深度学习框架——自动求导 https://www.cnblogs.com/wolfling/p/14919024.html
-
大模型:
-
OneFlow的大模型分片保存和加载策略
-
一块GPU训练TB级推荐模型不是梦,OneEmbedding性能一骑绝尘
-
大模型训练难于上青天?效率超群、易用的“李白”模型库来了
-
深度学习利器之自动微分(1)
相关文章:
pytorch的发展历史,与其他框架的联系
我一直是这样以为的:pytorch的底层实现是c(这一点没有问题,见下边的pytorch结构图),然后这个部分顺理成章的被命名为torch,并提供c接口,我们在python中常用的是带有python接口的,所以被称为pytorch。昨天无意中看到Torch是由lua语言写的&…...
Kibana-elastic--Elastic Stack--ELK Stack
Kibana 是什么? | Elastic 将数据转变为结果、响应和解决方案 使用 Kibana 针对大规模数据快速运行数据分析,以实现可观测性、安全和搜索。对来自任何来源的任何数据进行全面透彻的分析,从威胁情报到搜索分析,从日志到应用程序监测…...
Docker复杂命令便捷操作
启动所有状态为Created的容器 要启动所有状态为"created"的Docker容器,可以使用以下命令: docker container start $(docker container ls -aq --filter "statuscreated")上述命令执行了以下步骤: docker container l…...
Python中的datetime模块
time模块用于取得UNIX纪元时间戳,并加以处理。但是,如果以方便的格式显示日期,或对日期进行算数运算,就应该使用datetime模块。 目录 1. datetime数据类型 1) datetime.datetime.now()表示特定时刻 2)da…...
Flutter - 微信朋友圈、十字滑动效果(微博/抖音个人中心效果)
demo 地址: https://github.com/iotjin/jh_flutter_demo 代码不定时更新,请前往github查看最新代码 前言 一般APP都有类似微博/抖音个人中心的效果,支持上下拉刷新,并且顶部有个图片可以下拉放大,图片底部是几个tab,可…...
MySQL检索数据和排序数据
目录 一、select语句 1.检索单个列(SELECT 列名 FROM 表名;) 2.检索多个列(SELECT 列名1,列名2,列名3 FROM 表名;) 3.检索所有的列(SELECT * FROM 表名;) 4.检索不同的行&#x…...
通过STM32内部ADC将烟雾传感器发送的信号值显示在OLED上
一.CubeMX配置 首先我们在CubeMX配置ADC1, 设置一个定时器TIM2定时1s采样一次以及刷新一次OLED, 打开IIC用于驱动OLED显示屏。 二.程序 在Keil5中添加好oled的显示库,以及用来显示的函数、初始化函数、清屏函数等。在主程序中初始化oled,并将其清屏。…...
ZEPHYR 快速开发指南
简介 国内小伙伴在学习zephyr的时候,有以下几个痛点: 学习门槛过高github访问不畅,下载起来比较费劲。 这篇文章将我自己踩的坑介绍一下,顺便给大家优化一些地方,避免掉所有的坑。 首先用virtualbox 来安装一个ubu…...
【FPGA + 串口】功能完备的串口测试模块,三种模式:自发自收、交叉收发、内源
【FPGA 串口】功能完备的串口测试模块,三种模式:自发自收、交叉收发、内源 VIO 控制单元 wire [1:0] mode;vio_uart UART_VIO (.clk(ad9361_l_clk), // input wire clk.probe_out0(mode) // output wire [1 : 0] probe_out0 );将 mod…...
初步了解预训练语言模型BERT
本文字数::4024字 预计阅读时间:12分钟 BERT是由Google提出的预训练语言模型,它基于transformer架构,被广泛应用于自然语言处理领域,是当前自然语言处理领域最流行的预训练模型之一。而了解BERT需要先了解注…...
Android Hook系统 Handler 消息实现
前言 主线程的Handler 主要依赖于 ActivityThread,Android是消息驱动,比如view的刷新,activity的创建等,如果能打印系统层Handler消息日志,就需要对于系统层的Handler 进行Hook 原理 ActivityThread中 mH对象主要负责…...
R语言从入门到精通之【R语言的使用】
系列文章目录 1.R语言从入门到精通之【R语言介绍】 2.R语言从入门到精通之【R语言下载与安装】 3.R语言从入门到精通之【R语言的使用】 文章目录 系列文章目录一、新手上路1.R语句构成2.获取帮助3.工作空间二、包1.包的安装2.实践应用总结一、新手上路 1.R语句构成 R语句由函…...
WPF实战学习笔记29-登录数据绑定,编写登录服务
添加登录绑定字段、命令、方法 修改对象:Mytodo.ViewModels.ViewModels using Mytodo.Service; using Prism.Commands; using Prism.Events; using Prism.Mvvm; using Prism.Services.Dialogs; using System; using System.CodeDom.Compiler; using System.Collec…...
c++函数式编程:统计文件字符串,文件流
头文件 #include <iostream> #include <fstream> #include <string> #include <sstream> #include <algorithm> #include <vector>统计方法 int count_lines(const std::string &filename) {std::ifstream in{filename};return std:…...
scp命令----跨服务器传输文件
scp命令 Linux scp 命令用于 Linux 之间复制文件和目录。 scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。 scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。 一、Linux scp 命令 以下是scp命令常用的…...
React Dva项目中模仿网络请求数据方法
我们都已经选择react了 那么自然是一个前后端分离的开发形式 至少我在公司中 大部分时候是前后端同时开发的 一般你在开发界面没有接口直接给你 但你可以和后端约定数据格式 然后在前端模拟数据 我们在自己的Dva项目中 在根目录下的 mock 目录下创建一个js文件 我这里叫 filmDa…...
【云原生】Docker容器命令监控+Prometheus监控平台
目录 1.常用命令监控 docker ps docker top docker stats 2.weave scope 1.下载 2.安装 3.访问查询即可 3.Prometheus监控平台 1.部署数据收集器cadvisor 2.部署Prometheus 3.部署可视化平台Gragana 4.进入后台控制台 1.常用命令监控 docker ps [rootlocalhost ~…...
DBA 职责及日常工作职责
DBA 职责及日常工作职责: 1.安装和升级数据库服务器,以及应用程序工具构建和配置网络环境. 2.熟悉数据库系统的存储结构预测未来的存储需求,制订数据库的存储方案. 3.根据开发人员设计的应用系统需求创建数据库存储结构. 4.根据开发人员设计的应用系统需求创建数据库对象 5…...
如何利用量化接口进行数据分析和计算?
量化交易作为一种利用数据和算法进行投资的方式,数据分析和计算是量化交易的核心。量化接口作为连接量化交易者和交易所的桥梁,提供了获取市场数据和执行交易指令的功能,为量化交易的数据分析和计算提供了基础。 一、数据获取: 市…...
electron-egg 加密报错
electron框架:electron-egg 解决方式 npm uninstall bytenode npm install bytenode1.3.6node:internal/modules/cjs/loader:928 throw err; ^ Error: Cannot find module ‘node:assert/strict’ Require stack: D:\electron-egg-test\new-electron-egg\electr…...
170家具身智能公司名单
点击下方卡片,关注“CVer”公众号AI/CV重磅干货,第一时间送达具身智能:人工智能的下一个浪潮!今年再次被写入《政府工作报告》中,已经成为国家未来重点培育产业。市场方面,具身智能近一年融资更是爆火&…...
DeepSeek监控告警设置实战指南(告警失效率下降92%的7个关键开关)
更多请点击: https://kaifayun.com 第一章:DeepSeek监控告警设置的核心价值与落地挑战 在大模型推理服务规模化部署的背景下,DeepSeek系列模型(如DeepSeek-V2、DeepSeek-Coder)对资源稳定性、延迟敏感性及异常响应时效…...
什么是缓存穿透、缓存击穿、缓存雪崩?分别如何解决?
Redis 是一个开源的内存数据存储系统,广泛应用于缓存、消息队列等场景。尽管 Redis 在高并发环境下十分高效,但在使用过程中,可能会遇到缓存穿透、缓存击穿和缓存雪崩等问题。本文将详细介绍这三者的概念及其解决方案,并通过 Java…...
3分钟快速汉化:HS2-HF_Patch开源工具一键安装、多插件支持、中文游戏体验指南
3分钟快速汉化:HS2-HF_Patch开源工具一键安装、多插件支持、中文游戏体验指南 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 还在为Honey Select 2…...
如何解决多语言语音识别乱码问题:Vosk API的字符编码终极指南
如何解决多语言语音识别乱码问题:Vosk API的字符编码终极指南 【免费下载链接】vosk-api Offline speech recognition API for Android, iOS, Raspberry Pi and servers with Python, Java, C# and Node 项目地址: https://gitcode.com/GitHub_Trending/vo/vosk-a…...
【AI工具成本真相报告】:开源≠免费!TCO测算显示中大型项目3年隐性成本反超商业工具37%
更多请点击: https://kaifayun.com 第一章:【AI工具成本真相报告】:开源≠免费!TCO测算显示中大型项目3年隐性成本反超商业工具37% 开源AI工具常被默认等同于“零许可费用”,但真实总拥有成本(TCO…...
使用Python快速接入Taotoken聚合大模型平台完整教程
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Python快速接入Taotoken聚合大模型平台完整教程 对于希望快速体验不同大模型能力的Python开发者而言,通过一个统一…...
ChatGPT翻译质量断崖式下滑的真相:当LLM遇上专业领域术语库缺失,这4种场景下错误率超61%——你的项目还在裸奔吗?
更多请点击: https://codechina.net 第一章:ChatGPT翻译质量怎么样 ChatGPT 在翻译任务中展现出较强的上下文理解能力与语言生成流畅性,但其质量受输入提示(prompt)设计、源语言复杂度、专业领域术语密度及目标语言语…...
Marvis 1+5 智能体协作架构深度解析:六大 Agent 各司何职?底层又如何“对话“?
Marvis 15 智能体协作架构深度解析:六大 Agent 各司何职?底层又如何"对话"? 前言 2026 年 5 月 20 日,腾讯正式上线了操作系统级 AI 助手马维斯(Marvis)。它不走传统 AI 助手的"对话框&quo…...
【2026年版|必收藏】从0到1!AI大模型保姆级学习路线
2026年,大模型已从实验室走向规模化落地,AI Agent(智能体)、多模态、世界模型成为行业核心热点,无论是零基础小白想入门AI赛道,还是程序员想转型大模型领域,一套系统、不踩坑的学习路线都至关重…...
