「技术选型」深度学习软件如何选择?
深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI, Artificial Intelligence)。
深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远超过先前相关技术。 [1]
深度学习在搜索技术,数据挖掘,机器学习,机器翻译,自然语言处理,多媒体学习,语音,推荐和个性化技术,以及其他相关领域都取得了很多成果。深度学习使机器模仿视听和思考等人类的活动,解决了很多复杂的模式识别难题,使得人工智能相关技术取得了很大进步。 [1]
下表比较了用于深度学习的著名软件框架、库和计算机程序。



Deep-learning software by name
| 软件 | Apache MXNet | Apache SINGA | BigDL | Caffe |
| 创建者 | Apache Software Foundation | Apache Software Foundation | Jason Dai (Intel) | Berkeley Vision and Learning Center |
| 初始版本 | 2015 | 2015 | 2016 | 2013 |
| 软件许可证 | Apache 2.0 | Apache 2.0 | Apache 2.0 | BSD |
| 开源 | Yes | Yes | Yes | Yes |
| 平台 | Linux, macOS, Windows,[37][38] AWS, Android,[39] iOS, JavaScript[40] | Linux, macOS, Windows | Apache Spark | Linux, macOS, Windows[2] |
| 编写语言 | Small C++ core library | C++ | Scala | C++ |
| 接口 | C++, Python, Julia, Matlab, JavaScript, Go, R, Scala, Perl, Clojure | Python, C++, Java | Scala, Python | Python, MATLAB, C++ |
| OpenMP 支持 | Yes | No | Yes | |
| OpenCL 支持 | On roadmap[41] | Supported in V1.0 | Under development[3] | |
| CUDA 支持 | Yes | Yes | No | Yes |
| 自动分化 | Yes[42] | ? | Yes | |
| 预训练模型 | Yes[43] | Yes | Yes | Yes[4] |
| RNN | Yes | Yes | Yes | Yes |
| CNN | Yes | Yes | Yes | Yes |
| RBM/DBNs | Yes | Yes | No | |
| 并行执行(多节点) | Yes[44] | Yes | ? | |
| 积极发展 | Yes | No[5] |
| 软件 | Chainer | Deeplearning4j | Dlib | Flux |
| 创建者 | Preferred Networks | Skymind engineering team; Deeplearning4j community; originally Adam Gibson | Davis King | Mike Innes |
| 初始版本 | 2015 | 2014 | 2002 | 2017 |
| 软件许可证 | BSD | Apache 2.0 | Boost Software License | MIT license |
| 开源 | Yes | Yes | Yes | Yes |
| 平台 | Linux, macOS | Linux, macOS, Windows, Android (Cross-platform) | Cross-platform | Linux, MacOS, Windows (Cross-platform) |
| 编写语言 | Python | C++, Java | C++ | Julia |
| 接口 | Python | Java, Scala, Clojure, Python (Keras), Kotlin | C++ | Julia |
| OpenMP 支持 | No | Yes | Yes | |
| OpenCL 支持 | No | No[7] | No | |
| CUDA 支持 | Yes | Yes[8][9] | Yes | Yes |
| 自动分化 | Yes | Computational Graph | Yes | Yes |
| 预训练模型 | Yes | Yes[10] | Yes | Yes[12] |
| RNN | Yes | Yes | No | Yes |
| CNN | Yes | Yes | Yes | Yes |
| RBM/DBNs | No | Yes | Yes | No |
| 并行执行(多节点) | Yes | Yes[11] | Yes | Yes |
| 积极发展 | No[6] | Yes |
| 软件 | Intel Math Kernel Library | Keras | MATLAB + Deep Learning Toolbox | Microsoft Cognitive Toolkit (CNTK) | Neural Designer |
| 创建者 | Intel | François Chollet | MathWorks | Microsoft Research | Artelnics |
| 初始版本 | 2015 | 2016 | |||
| 软件许可证 | Proprietary | MIT license | Proprietary | MIT license[26] | Proprietary |
| 开源 | No | Yes | No | Yes | No |
| 平台 | Linux, macOS, Windows on Intel CPU[14] | Linux, macOS, Windows | Linux, macOS, Windows | Windows, Linux[27] (macOS via Docker on roadmap) | Linux, macOS, Windows |
| 编写语言 | Python | C, C++, Java, MATLAB | C++ | C++ | |
| 接口 | C[15] | Python, R | MATLAB | Python (Keras), C++, Command line,[28] BrainScript[29] (.NET on roadmap[30]) | Graphical user interface |
| OpenMP 支持 | Yes[16] | Only if using Theano as backend | No | Yes[31] | Yes |
| OpenCL 支持 | No | Can use Theano, Tensorflow or PlaidML as backends | No | No | No |
| CUDA 支持 | No | Yes | Train with Parallel Computing Toolbox and generate CUDA code with GPU Coder[21] | Yes | No |
| 自动分化 | Yes | Yes | Yes[22] | Yes | ? |
| 预训练模型 | No | Yes[18] | Yes[23][24] | Yes[32] | ? |
| RNN | Yes[17] | Yes | Yes[23] | Yes[33] | No |
| CNN | Yes[17] | Yes | Yes[23] | Yes[33] | No |
| RBM/DBNs | No[19] | Yes | No[34] | No | |
| 并行执行(多节点) | No | Yes[20] | With Parallel Computing Toolbox[25] | Yes[35] | ? |
| 积极发展 | Yes | Yes | No[36] |
| 软件 | OpenNN | PlaidML | PyTorch | TensorFlow |
| 创建者 | Artelnics | Vertex.AI,Intel | Adam Paszke, Sam Gross, Soumith Chintala, Gregory Chanan (Facebook) | Google Brain |
| 初始版本 | 2003 | 2017 | 2016 | 2015 |
| 软件许可证 | GNU LGPL | AGPL | BSD | Apache 2.0 |
| 开源 | Yes | Yes | Yes | Yes |
| 平台 | Cross-platform | Linux, macOS, Windows | Linux, macOS, Windows | Linux, macOS, Windows,[47] Android |
| 编写语言 | C++ | Python, C++, OpenCL | Python, C, C++, CUDA | C++, Python, CUDA |
| 接口 | C++ | Python, C++ | Python, C++, Julia | Python (Keras), C/C++, Java, Go, JavaScript, R,[48] Julia, Swift |
| OpenMP 支持 | Yes | ? | Yes | No |
| OpenCL 支持 | No | Some OpenCL ICDs are not recognized | Via separately maintained package[45][46][46] | On roadmap[49] but already with SYCL[50] support |
| CUDA 支持 | Yes | No | Yes | Yes |
| 自动分化 | ? | Yes | Yes | Yes[51] |
| 预训练模型 | ? | Yes | Yes | Yes[52] |
| RNN | No | Yes | Yes | Yes |
| CNN | No | Yes | Yes | Yes |
| RBM/DBNs | No | Yes | ||
| 并行执行(多节点) | ? | Yes | Yes | Yes |
| 积极发展 | Yes | Yes | Yes |
| 软件 | Theano | Torch | Wolfram Mathematica |
| 创建者 | Université de Montréal | Ronan Collobert, Koray Kavukcuoglu, Clement Farabet | Wolfram Research |
| 初始版本 | 2007 | 2002 | 1988 |
| 软件许可证 | BSD | BSD | Proprietary |
| 开源 | Yes | Yes | No |
| 平台 | Cross-platform | Linux, macOS, Windows,[58] Android,[59] iOS | Windows, macOS, Linux, Cloud computing |
| 编写语言 | Python | C, Lua | C++, Wolfram Language, CUDA |
| 接口 | Python (Keras) | Lua, LuaJIT,[60] C, utility library for C++/OpenCL[61] | Wolfram Language |
| OpenMP 支持 | Yes | Yes | Yes |
| OpenCL 支持 | Under development[53] | Third party implementations[62][63] | No |
| CUDA 支持 | Yes | Yes[64][65] | Yes |
| 自动分化 | Yes[54][55] | Through Twitter's Autograd[66] | Yes |
| 预训练模型 | Through Lasagne's model zoo[56] | Yes[67] | Yes[68] |
| RNN | Yes | Yes | Yes |
| CNN | Yes | Yes | Yes |
| RBM/DBNs | Yes | Yes | Yes |
| 并行执行(多节点) | Yes[57] | Yes[58] | Yes[69] |
| 积极发展 | No | No | Yes |
-
^许可证这里是一个摘要,并不是完整的许可证声明。一些库可能在不同的许可证下在内部使用其他库
机器学习模型的兼容性比较
| Format Name | 设计目标 | 与其他格式比较 | 自包含 DNN 模型 | 预处理和后处理 | 用于调整和校准的运行时配置 | 款模型互连 | 通用平台 |
|---|---|---|---|---|---|---|---|
| TensorFlow, Keras, Caffe, Torch, ONNX, | 算法训练 | No | 没有/单 独的文件 在大多数格式 | No | No | No | Yes |
| ONNX | 算法训练 | Yes | 没有/单 独的文件在大多数格式 | No | No | No | Yes |
本文:「技术选型」深度学习软件如何选择?
https://architect.pub/wikipedia-comparison-deep-learning-software
谢谢大家关注,转发,点赞和点在看。
相关文章:
「技术选型」深度学习软件如何选择?
深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI, Artificial Intelligence)。 深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对…...
加油站会员管理小程序实战开发教程13
我们上一篇讲解了会员注册的功能,本篇我们介绍一下会员开卡的功能。 会员注册之后,可以进行开卡的动作。一个会员可以有多张会员卡,在微搭中用来描述这种一对多的关系的,我们用关联关系来表达。 登录微搭的控制台,点击数据模型,点击新建数据模型 输入数据源的名称会员卡…...
Go语言Web入门之浅谈Gin框架
Gin框架Gin简介第一个Gin示例HelloworldRESTful APIGin返回数据的几种格式Gin 获取参数HTTP重定向Gin路由&路由组Gin框架当中的中间件Gin简介 Gin 是一个用 Go (Golang) 编写的 web 框架。它是一个类似于 martini 但拥有更好性能的 API 框架,由于 httprouter&a…...
《MySQL学习》 MySQL优化器选择如何选择索引
一.优化器的选择逻辑 建表语句 CREATE TABLE t (id int(11) NOT NULL AUTO_INCREMENT,a int(11) DEFAULT NULL,b int(11) DEFAULT NULL,PRIMARY KEY (id),KEY a (a),KEY b (b) ) ENGINEInnoDB;往表中插入10W条数据 delimiter ;; create procedure idata() begindeclare i in…...
uniapp 悬浮窗(应用内、无需授权) Ba-FloatWindow2
简介(下载地址) Ba-FloatWindow2 是一款应用内并且无需授权的悬浮窗插件。支持多种拖动;自定义位置、大小;支持动态修改。 支持自动定义起始位置支持自定义悬浮窗大小支持贴边显示支持多种拖动方效果:不可拖动、任意…...
MMKV与mmap:全方位解析
概述 MMKV 是基于 mmap 内存映射的移动端通用 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。从 2015 年中至今,在 iOS 微信上使用已有近 3 年,其性能和稳定性经过了时间的验证。近期已移植…...
【信息系统项目管理师】项目管理十大知识领域记忆敲出(整体范围进度)
【信息系统项目管理师】项目管理十大知识领域记忆敲出(整体范围进度) 【信息系统项目管理师】项目管理十大知识领域记忆敲出(整体范围进度)【信息系统项目管理师】项目管理十大知识领域记忆敲出(整体范围进度ÿ…...
一起学 pixijs(3):Sprite
大家好,我是前端西瓜哥。今天来学习 pixijs 的 Sprite。 Sprite pixijs 的 Sprite 类用于将一些纹理(Texture)渲染到屏幕上。 Sprite 直译为 “精灵”,是游戏开发中常见的术语,就是将一个角色的多个动作放到一个图片…...
深入讲解Kubernetes架构-垃圾收集
垃圾收集(Garbage Collection)是 Kubernetes 用于清理集群资源的各种机制的统称。 垃圾收集允许系统清理如下资源:终止的 Pod已完成的 Job不再存在属主引用的对象未使用的容器和容器镜像动态制备的、StorageClass 回收策略为 Delete 的 PV 卷…...
Flink03: 集群安装部署
Flink支持多种安装部署方式 StandaloneON YARNMesos、Kubernetes、AWS… 这些安装方式我们主要讲一下standalone和on yarn。 如果是一个独立环境的话,可能会用到standalone集群模式。 在生产环境下一般还是用on yarn 这种模式比较多,因为这样可以综合利…...
OCR项目实战(一):手写汉语拼音识别(Pytorch版)
✨写在前面:强烈推荐给大家一个优秀的人工智能学习网站,内容包括人工智能基础、机器学习、深度学习神经网络等,详细介绍各部分概念及实战教程,非常适合人工智能领域初学者及研究者学习。➡️点击跳转到网站。 📝OCR专栏…...
【js】export default也在影响项目性能呢
这里写目录标题介绍先说结论分析解决介绍 无意间看到一个关于export与exprot default对比的话题, 于是对二者关于性能方面,有了想法,二者的区别,仅仅是在于写法吗? 于是,有了下面的测试。 先说结论 太长…...
《软件安全》 彭国军 阅读总结
对于本书,小编本意是对其讲述的内容,分点进行笔记的整理,后来学习以后,发现,这本书应该不算是一本技术提升类的书籍,更像是一本领域拓展和知识科普类书籍,所讲知识广泛,但是较少实践…...
深入讲解Kubernetes架构-节点与控制面之间的通信
本文列举控制面节点(确切说是 API 服务器)和 Kubernetes 集群之间的通信路径。 目的是为了让用户能够自定义他们的安装,以实现对网络配置的加固, 使得集群能够在不可信的网络上(或者在一个云服务商完全公开的 IP 上&am…...
120个IT冷知识,看完就不愁做选择题了
目录 IT冷知识 01-10 1.冰淇淋馅料 2.蠕虫起源 3.Linux和红帽子 4."间谍软件"诞生 5.游戏主机的灵魂 6.Linux之父 7.NetBSD的口号 8.安卓起源 9.不是第七代的 Win 7 10.域名金字塔 11~20 11.神奇魔盒 12. 第一个Ubuntu 正式版本 13.巾帼英雄 14.密码…...
Java之动态规划之机器人移动
目录 0.动态规划问题 一.不同路径 1.题目描述 2.问题分析 3.代码实现 二.不同路径 II 1.题目描述 2.问题分析 3.代码实现 三.机器人双向走路 1.题目描述 2.问题分析 3.代码实现 0.动态规划问题 动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问…...
seata源码-全局事务提交 服务端源码
前面的博客中,我们介绍了,发起全局事务时,是如何进行全局事务提交的,这篇博客,主要记录,在seata分布式事务中,全局事务提交的时候,服务端是如何进行处理的 发起全局事务提交操作 事…...
C++ 模板
文章目录一、泛型编程二、 函数模板三、类模板一、泛型编程 泛型编程:编写与类型无关的通用代码,代码复用的一种方法 在 C 中,我们可以通过函数重载实现通用的交换函数 Swap ,但是有一些缺点 重载函数只有类型不同,…...
JWT安全漏洞以及常见攻击方式
前言 随着web应用的日渐复杂化,某些场景下,仅使用Cookie、Session等常见的身份鉴别方式无法满足业务的需要,JWT也就应运而生,JWT可以有效的解决分布式场景下的身份鉴别问题,并且会规避掉一些安全问题,如CO…...
华为OD机试题 - 最小施肥机能效(JavaScript)
最近更新的博客 华为OD机试题 - 任务总执行时长(JavaScript) 华为OD机试题 - 开放日活动(JavaScript) 华为OD机试 - 最近的点 | 备考思路,刷题要点,答疑 【新解法】 华为OD机试题 - 最小步骤数(JavaScript) 华为OD机试题 - 任务混部(JavaScript) 华为OD机试题 - N 进…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
解析两阶段提交与三阶段提交的核心差异及MySQL实现方案
引言 在分布式系统的事务处理中,如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议(2PC)通过准备阶段与提交阶段的协调机制,以同步决策模式确保事务原子性。其改进版本三阶段提交协议(3PC…...
yaml读取写入常见错误 (‘cannot represent an object‘, 117)
错误一:yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因,后面把yaml.safe_dump直接替换成yaml.dump,确实能保存,但出现乱码: 放弃yaml.dump,又切…...
