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

「技术选型」深度学习软件如何选择?

深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI, Artificial Intelligence)。 

深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远超过先前相关技术。 [1]

深度学习在搜索技术,数据挖掘,机器学习,机器翻译,自然语言处理,多媒体学习,语音,推荐和个性化技术,以及其他相关领域都取得了很多成果。深度学习使机器模仿视听和思考等人类的活动,解决了很多复杂的模式识别难题,使得人工智能相关技术取得了很大进步。 [1]

下表比较了用于深度学习的著名软件框架、库和计算机程序。

f8f0b6e160dd958aa76f781b255285ac.jpeg

7542bc835c743a4754df02afaf8093b3.jpeg

06b908b9b14150581720c9a7c1524234.jpeg

Deep-learning software by name

软件Apache MXNetApache SINGABigDLCaffe
创建者Apache  Software FoundationApache Software  FoundationJason  Dai (Intel)Berkeley  Vision and Learning Center
初始版本2015201520162013
软件许可证Apache 2.0Apache 2.0Apache 2.0BSD
开源YesYesYesYes
平台Linux, macOS, Windows,[37][38] AWS, Android,[39] iOS, JavaScript[40]Linux, macOS, WindowsApache  SparkLinux, macOS, Windows[2]
编写语言Small C++ core  libraryC++ScalaC++
接口C++, Python, Julia, Matlab, JavaScript, Go, R, Scala, Perl, ClojurePython, C++, JavaScala,  PythonPython, MATLAB, C++
OpenMP 支持YesNoYes
OpenCL 支持On roadmap[41]Supported  in V1.0Under development[3]
CUDA 支持YesYesNoYes
自动分化Yes[42]?Yes
预训练模型Yes[43]YesYesYes[4]
RNNYesYesYesYes
CNNYesYesYesYes
RBM/DBNsYesYesNo
并行执行(多节点)Yes[44]Yes?
积极发展YesNo[5]
软件ChainerDeeplearning4jDlibFlux
创建者Preferred  NetworksSkymind  engineering team; Deeplearning4j community; originally Adam GibsonDavis  KingMike  Innes
初始版本2015201420022017
软件许可证BSDApache 2.0Boost Software  LicenseMIT license
开源YesYesYesYes
平台Linux, macOSLinux, macOS, Windows, Android (Cross-platform)Cross-platformLinux, MacOS, Windows (Cross-platform)
编写语言PythonC++, JavaC++Julia
接口PythonJava, Scala, Clojure, Python (Keras), KotlinC++Julia
OpenMP 支持NoYesYes
OpenCL 支持NoNo[7]No
CUDA 支持YesYes[8][9]YesYes
自动分化YesComputational  GraphYesYes
预训练模型YesYes[10]YesYes[12]
RNNYesYesNoYes
CNNYesYesYesYes
RBM/DBNsNoYesYesNo
并行执行(多节点)YesYes[11]YesYes
积极发展No[6]Yes
软件

Intel

 Math  

Kernel 

Library

KerasMATLAB +  Deep Learning ToolboxMicrosoft  Cognitive Toolkit (CNTK)Neural Designer
创建者IntelFrançois  CholletMathWorksMicrosoft ResearchArtelnics
初始版本20152016
软件许可证ProprietaryMIT licenseProprietaryMIT  license[26]Proprietary
开源NoYesNoYesNo
平台Linux, macOS, Windows on Intel CPU[14]Linux, macOS, WindowsLinux, macOS, WindowsWindows, Linux[27] (macOS via Docker on roadmap)Linux, macOS, Windows
编写语言PythonC, C++, Java, MATLABC++C++
接口C[15]Python, RMATLABPython (Keras), C++, Command line,[28] BrainScript[29] (.NET on roadmap[30])Graphical user  interface
OpenMP 支持Yes[16]Only  if using Theano as backendNoYes[31]Yes
OpenCL 支持NoCan  use Theano, Tensorflow or PlaidML as backendsNoNoNo
CUDA 支持NoYesTrain with Parallel  Computing Toolbox and generate CUDA code with GPU Coder[21]YesNo
自动分化YesYesYes[22]Yes?
预训练模型NoYes[18]Yes[23][24]Yes[32]?
RNNYes[17]YesYes[23]Yes[33]No
CNNYes[17]YesYes[23]Yes[33]No
RBM/DBNsNo[19]YesNo[34]No
并行执行(多节点)NoYes[20]With Parallel  Computing Toolbox[25]Yes[35]?
积极发展YesYesNo[36]
软件OpenNNPlaidMLPyTorchTensorFlow
创建者ArtelnicsVertex.AI,IntelAdam  Paszke, Sam Gross, Soumith Chintala, Gregory Chanan (Facebook)Google Brain
初始版本2003201720162015
软件许可证GNU LGPLAGPLBSDApache 2.0
开源YesYesYesYes
平台Cross-platformLinux, macOS, WindowsLinux, macOS, WindowsLinux, macOS, Windows,[47] Android
编写语言C++Python, C++, OpenCLPython, C, C++, CUDAC++, Python, CUDA
接口C++Python, C++Python, C++, JuliaPython (Keras), C/C++, Java, Go, JavaScript, R,[48] Julia, Swift
OpenMP 支持Yes?YesNo
OpenCL 支持NoSome  OpenCL ICDs are not recognizedVia  separately maintained package[45][46][46]On  roadmap[49] but already with SYCL[50] support
CUDA 支持YesNoYesYes
自动分化?YesYesYes[51]
预训练模型?YesYesYes[52]
RNNNoYesYesYes
CNNNoYesYesYes
RBM/DBNsNoYes
并行执行(多节点)?YesYesYes
积极发展YesYesYes
软件TheanoTorchWolfram  Mathematica
创建者Université de  MontréalRonan  Collobert, Koray Kavukcuoglu, Clement FarabetWolfram Research
初始版本200720021988
软件许可证BSDBSDProprietary
开源YesYesNo
平台Cross-platformLinux, macOS, Windows,[58] Android,[59] iOSWindows, macOS, Linux, Cloud computing
编写语言PythonC, LuaC++, Wolfram Language, CUDA
接口Python (Keras)Lua, LuaJIT,[60] C,  utility library for C++/OpenCL[61]Wolfram Language
OpenMP 支持YesYesYes
OpenCL 支持Under development[53]Third  party implementations[62][63]No
CUDA 支持YesYes[64][65]Yes
自动分化Yes[54][55]Through Twitter's Autograd[66]Yes
预训练模型Through Lasagne's  model zoo[56]Yes[67]Yes[68]
RNNYesYesYes
CNNYesYesYes
RBM/DBNsYesYesYes
并行执行(多节点)Yes[57]Yes[58]Yes[69]
积极发展NoNoYes
  • ^许可证这里是一个摘要,并不是完整的许可证声明。一些库可能在不同的许可证下在内部使用其他库

机器学习模型的兼容性比较

Format Name设计目标与其他格式比较

自包含

 DNN 模型

预处理和后处理用于调整和校准的运行时配置款模型互连通用平台
TensorFlow, Keras, Caffe, Torch, ONNX,算法训练No

没有/单

独的文件

在大多数格式

NoNoNoYes
ONNX算法训练Yes

没有/单

独的文件在大多数格式

NoNoNoYes

本文:「技术选型」深度学习软件如何选择?icon-default.png?t=N176https://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 年,其性能和稳定性经过了时间的验证。近期已移植…...

【信息系统项目管理师】项目管理十大知识领域记忆敲出(整体范围进度)

【信息系统项目管理师】项目管理十大知识领域记忆敲出(整体范围进度) 【信息系统项目管理师】项目管理十大知识领域记忆敲出(整体范围进度)【信息系统项目管理师】项目管理十大知识领域记忆敲出(整体范围进度&#xff…...

一起学 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 进…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

【JVM】- 内存结构

引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...

DiscuzX3.5发帖json api

参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...

怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)

+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...