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

news2024/11/15 13:41:40

深度学习(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

谢谢大家关注,转发,点赞和点在看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/356483.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Flutter入门到进阶】Dart进阶篇---DartVM单线程设计原理

1 虚拟机的指令执行设计 1.1 虚拟机的分类 基于栈的虚拟机,比如JVM虚拟机 基于寄存器的虚拟机,比如Dalvik虚拟机 1.2 虚拟机的概念 首先问一个基本的问题,作为一个虚拟机,它最基本的要实现哪些功能? 他应该能够模拟…

使用uni-app框架中uni.chooseAddress()接口,获取不到用户收货地址

错误描述 在我们使用uni-app框架或微信原生开发微信小程序时,使用到uni.chooseAddress(OBJECT)接口获取用户收货地址时,无法跳转到收货地址页面获取。 打印接口返回信息,显示 "chooseAddress:fail the api need to be declared in the …

LeetCode-17. 电话号码的字母组合

题目来源 17. 电话号码的字母组合 题目思路 从示例上来说,输入"23",最直接的想法就是两层for循环遍历了吧,正好把组合的情况都输出了。 如果输入"233"呢,那么就三层for循环,如果"2333"…

接口测试(Fiddler工具)

目录 1.Fiddler是什么? 2.Fiddler的原理 3.Fiddler安装 4.Fiddler界面 4.1.常用工具 4.2 会话列表 4.3 状态栏 4.4 内容显示区 1.Fiddler是什么? Fiddler是客户端与服务器之间的HTTP代理,是当前最常用的HTTP协议抓包工具。 主要功能&a…

NSDT可编程3D场景【兼容Three.js】

NSDT编辑器简化了WebGL 3D应用的开发,完全兼容Three.JS生态。本文介绍如何在自己的应用中嵌入使用NSDT编辑器搭建的3D场景,并通过JS API与场景进行交互。 在自己的应用中嵌入3D场景只需要三个步骤: 在NSDT编辑器中搭建3D场景在自己的前端应…

Nonebot2官网插件nonebot-plugin-chatgpt让自己的QQ聊天机器人不再呆头呆脑

前言 如果你会使用Nonebot2搭建QQ聊天机器人,那么你一定会使用Nonebot官网上插件商店发布的插件,今天这篇博客记录一下使用插件时遇到的错误,最终如何解决的错误。在开始之前先看一下效果图吧! 瞬间我们的QQ机器人就高大上了起…

Java serialVersionUID 作用和自动生成设置

一、由来 最近在做一个军工的项目,代码提交后,军方用代码安全扫描工具,对代码进行全局扫描,提示一个漏洞,导致原因是实体类实现了Serializable接口,未对serialVersionUID手动赋值,java机制里&am…

Zero-shot(零次学习)简介

zero-shot基本概念 首先通过一个例子来引入zero-shot的概念。假设我们已知驴子和马的形态特征,又已知老虎和鬣狗都是又相间条纹的动物,熊猫和企鹅是黑白相间的动物,再次的基础上,我们定义斑马是黑白条纹相间的马科动物。不看任何斑…

枚举类的使用方法

一、理解枚举类型 枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性。下面先来看看如何写…

如何用一句话感动测试工程师?产品和技术都这么说!

测试工程师在公司里的地位一言难尽,产品挥斥苍穹,指引产品前路;开发编写代码实现功能,给产品带来瞩目成就。两者,一个是领航员,一个是开拓者,都是聚光灯照耀的对象,唯独团队中的保障…

换脸方法大汇总:生成对抗网络GAN、扩散模型等

1、One-Shot Face Video Re-enactment using Hybrid Latent Spaces of StyleGAN2StyleGAN的高保真人像生成,已逐渐克服了单样本面部视频驱动重现的低分辨率限制,但这些方法至少依赖于以下其中之一:明确的2D/3D先验,基于光流作为运…

Android 基础知识4-2.5View与VIewGroup的概念、关系与区别

1.概念: Android里的图形界面都是由View和ViewGroup以及他们的子类构成的: View:所有可视化控件的父类,提供组件描绘和时间处理方法 ViewGroup: View类的子类,可以拥有子控件,可以看作是容器 Android UI中的控件都是…

Java【七大算法】算法详细图解,一篇文章吃透

文章目录一、排序相关概念二、七大排序1,直接插入排序2,希尔排序3,选择排序4,堆排序5,冒泡排序5.1冒泡排序的优化6,快速排序6.1 快速排序的优化7,归并排序三、排序算法总体分析对比总结提示&…

K8s学习(一)从零开始搭建kubernetes集群环境(虚拟机/kubeadm方式)

文章目录1 Kubernetes简介(k8s)2 安装实战2.1 主机安装并初始化2.2 安装docker2.3 安装Kubernetes组件2.4 准备集群镜像2.5 集群初始化2.6 安装flannel网络插件3 部署nginx 测试3.1 创建一个nginx服务3.2 暴漏端口3.3 查看服务3.4 测试服务1 Kubernetes简…

centos7安装RabbitMQ

1、查看本机基本信息 查看Linux发行版本 uname -a # Linux VM-0-8-centos 3.10.0-1160.11.1.el7.x86_64 #1 SMP Fri Dec 18 16:34:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux cat /etc/redhat-release # CentOS Linux release 7.9.2009 (Core)2、创建创建工作目录 mkdir /…

下一代视频编码技术2023

下一代视频编码技术 下面将从这两个角度来介绍华为云视频在下一代视频编码技术上的一些工作。这些技术得益于华为2012 媒体技术院全力支持。 2.1 下一代视频编码标准技术 从上图可以看出,下一代的视频编码标准大概分为三个阵营或者三个类型: 国际标准…

卷积神经网络(CNN)经典模型分析(一)

CNN经典模型分析🐬 目录: 一、CNN概论二、model分析LeNet5AlexNetVggNetGoogleNetResNet 三、参考资料 一、CNN概论 如图所示:人工智能最大,此概念也最先问世;然后是机器学习,出现的稍晚;最后才是深度学习…

Python编程自动化办公案例(2)

作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.前期代码 二.实现批量读取 1.os库 2.实现思路 (1&#…

VBA提高篇_ 22 事件处理

文章目录1.事件编程2.常用工作簿事件名称与对应处理过程名称示例3. 事件编程的步骤4.工作簿事件4.1 Open4.2 BeforeClose4.3 NewSheet5.工作表事件6.变量和过程函数的作用域1.事件编程 写在事件发生地(对应工作簿或工作表) 2.常用工作簿事…

22 pandas字符串操作

文章目录字符串对象方法cat和指定字符串进行拼接查看数据不指定参数,所有姓名拼接不指定参数,所有姓名拼接添加分隔符添加数据遇到空值时合并split按照指定字符串分隔partition 按照指定字符串分割get 获取指定位置的字符,只能获取1个slice 获…