「技术选型」深度学习软件如何选择?
深度学习(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 进…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
