根据您的个人工作负载选择正确的深度学习框架是深度学习中必不可少的第一步
深度学习最近获得了极大的普及,各种深度学习架构使该领域更加广泛。为了支持针对不同用例实现这些架构,可以使用多个框架。虽然这些框架中的每一个都有其优点和缺点,但根据您的个人工作负载选择正确的深度学习框架是每个开发人员、深度学习从业者或数据科学家必须采取的重要第一步。
本文概述了六种最流行的深度学习框架:TensorFlow、Keras、PyTorch、Caffe、Theano 和 Deeplearning4j。在过去的几年里,其中三个深度学习框架——Tensorflow、Keras 和 PyTorch——因其易用性、在学术研究中的广泛使用以及商业代码和可扩展性而获得了发展势头。在本文中,我们还将比较和对比 TensorFlow 和 PyTorch。
TensorFlow (张量流)
在机器学习的上下文中,张量是指描述神经网络的数学模型中使用的多维数组。换句话说,张量通常是矩阵或向量的更高维泛化。
通过使用秩来显示维度数的简单符号,张量允许将复杂向量和超形状表示为数组。张量有两个属性:数据类型和形状。_n_-dimensional``_n_-dimensional
TensorFlow 是一个开源深度学习框架,于 2015 年底在 Apache 2.0 许可下发布。从那时起,它已成为世界上采用最广泛的深度学习框架之一(根据基于它的 GitHub 项目的数量)。
TensorFlow 的起源可以追溯到 Google DistBelief,这是一个由 Google Brain 项目开发的专有生产深度学习系统。Google 从头开始设计 TensorFlow 用于分布式处理,并在其生产数据中心的 Google 定制专用集成电路 (ASIC) 上以最佳方式运行,称为张量处理单元 (TPU)。这种设计使 TensorFlow 能够高效地应用于深度学习应用。
该框架可以在服务器、台式机和移动设备上的 CPU、GPU 或 TPU 上运行。开发人员可以在本地或云端的多个操作系统和平台上部署 TensorFlow。许多开发人员认为 TensorFlow 比 Torch 和 Theano 等类似的深度学习框架具有更好的分布式处理支持,并为商业应用程序提供更大的灵活性和性能,后者也能够进行硬件加速并在学术界广泛使用。
深度学习神经网络通常由许多层组成。它们使用多维数组在层之间传输数据或执行操作。张量在神经网络的各层之间流动,因此得名 TensorFlow。
TensorFlow 的主要编程语言是 Python。C++、Java® 语言和 Go 应用程序编程接口 (API) 也可以在没有稳定性承诺的情况下使用,C#、Haskell、Julia、Rust、Ruby、Scala、R 甚至 PHP 的许多第三方绑定也是如此。Google 有一个针对移动设备优化的 TensorFlow-Lite 库,可以在 Android 上运行 TensorFlow 应用程序。
本节概述了 TensorFlow 系统,包括该框架的优势和应用。
TensorFlow 的优势
TensorFlow 为开发人员提供:
-
急切的执行力。TensorFlow 2 支持快速执行,通过这些执行可以立即评估操作并返回具体值,而无需构建图形。这有助于启动模型构建和调试模型。
-
计算图模型。TensorFlow 使用称为有向图的数据流图来表达计算模型。这使得开发人员能够直观地使用内置工具轻松可视化神经网络层内发生的事情,并通过交互式调整参数和配置来完善其神经网络模型。
-
简单易用的 API。Python 开发人员可以使用 TensorFlow 原始 API、低级 API 或核心 API 来开发自己的模型,也可以将高级 API 库用于内置模型。TensorFlow 有许多内置和贡献的库,可以叠加更高级别的深度学习框架(如 Keras)以充当高级 API。以前的许多 API 已被删除或更新到 TensorFlow 2.0。
-
灵活的架构。使用 TensorFlow 的一个主要优势是它具有模块化、可扩展和灵活的设计。开发人员可以轻松地在 CPU、GPU 或 TPU 处理器之间移动模型,只需进行少量代码更改。虽然 TensorFlow 最初是为大规模分布式训练和推理而设计的,但开发人员也可以使用 TensorFlow 来试验其他机器学习模型和现有模型的系统优化。
-
分布式处理。Google Brain 从头开始设计 TensorFlow,用于在其定制的 ASIC TPU 上进行分布式处理。此外,TensorFlow 可以在多个 NVIDIA GPU 内核上运行。开发人员可以利用基于 Intel Xeon 和 Xeon Phi 的 x64 CPU 架构或 ARM64 CPU 架构。TensorFlow 可以在多架构和多核系统上运行,也可以在分布式进程上运行,该进程将计算密集型处理作为工作任务进行分配。开发人员可以创建 TensorFlow 服务器集群,并将计算图分布在这些集群中进行训练。TensorFlow 可以在图内和图之间同步或异步执行分布式训练,并且可以在内存中或网络计算节点之间共享通用数据。
-
性能。性能通常是一个有争议的话题,但大多数开发人员都明白,任何深度学习框架都依赖于底层硬件以最佳方式运行,以低能耗实现高性能。通常,任何框架的原生开发平台都会实现最佳优化。TensorFlow 在 Google TPU 上表现最佳,但它设法在各种平台上实现高性能,不仅是服务器和台式机,还有嵌入式系统和移动设备。该框架还支持数量惊人的编程语言。尽管另一个本地运行的框架(例如 IBM 平台上的 IBM Watson)有时可能优于 TensorFlow,但它仍然是开发人员的最爱,因为人工智能 (AI) 项目可以跨越针对多个终端应用程序的平台和编程语言,所有这些都需要产生一致的结果。
TensorFlow 应用程序
本节将介绍 TensorFlow 擅长的应用。显然,由于 Google 将其专有版本的 TensorFlow 用于文本和语音搜索、语言翻译和图像搜索应用程序,因此 TensorFlow 的主要优势在于分类和推理。例如,Google 在 TensorFlow 中实现了 RankBrain,这是对 Google 搜索结果进行排名的引擎。
TensorFlow 可用于通过区分多种语音或在高环境噪声环境中过滤语音来改进语音识别和语音合成,模仿语音模式以获得更自然的文本到语音。此外,它还处理不同语言的句子结构以产生更好的翻译。它可用于图像和视频识别以及物体、地标、人物、情绪或活动的分类。这导致了图像和视频搜索的重大改进。
由于其灵活、可扩展和模块化的设计,TensorFlow 不会将开发人员限制在特定的模型或应用程序上。开发人员不仅使用 TensorFlow 实现了机器学习和深度学习算法,还实现了统计和通用计算模型。有关应用程序和贡献的模型的更多信息,请参阅TensorFlow 案例研究.
KERAS
克拉斯是一个基于 Python 的深度学习库,不同于其他深度学习框架。Keras 用作神经网络的高级 API 规范。它既可以用作用户界面,也可以扩展运行它的其他深度学习框架后端的功能。
Keras 最初是作为学术上流行的 Theano 框架的简化前端。从那时起,Keras API 已成为 Google TensorFlow 的一部分。Keras正式支持Microsoft Cognitive Toolkit(CNTK)、Deeplearning4J和Apache MXNet。由于这种广泛的支持,Keras 已经获得了框架之间迁移的事实上的工具的地位。开发人员不仅可以移植深度学习神经网络算法和模型,还可以移植预训练的网络和权重。
Keras是在麻省理工学院(MIT)许可下发布的开源Python包,François Chollet,Google,Microsoft和其他贡献者拥有该软件的一些版权。
Keras 前端支持在研究中对神经网络模型进行快速原型设计。该 API 易于学习和使用,并具有在框架之间轻松移植模型的额外优势。
由于 Keras 是独立的,因此无需与运行它的后端框架进行交互即可使用它。Keras 有自己的图数据结构来定义计算图:它不依赖于底层后端框架的图数据结构。这种方法使您不必学习对后端框架进行编程,这就是 Google 选择将 Keras API 添加到其 TensorFlow 核心的原因。
但是,在 Keras 2.4.0 中,Keras 已经停止了多后端 Keras,并专注于 TensorFlow。
Keras的好处
那么,为什么要使用Keras呢?有许多好处,包括:
-
为深度学习应用程序提供更好的用户体验 (UX)。Keras API 是用户友好的。该 API 设计精良、面向对象且灵活,可提供更好的用户体验。研究人员可以定义新的深度学习模型,而无需使用可能复杂的后端,从而产生更简单、更精简的代码。
-
无缝的 Python 集成。Keras 是一个原生 Python 包,它允许轻松访问整个 Python 数据科学生态系统。例如,Python scikit-learn API 也可以使用 Keras 模型。熟悉 TensorFlow 等后端的开发人员也可以使用 Python 来扩展 Keras。
-
庞大、便携的工作体和强大的知识库。研究人员将 Keras 与 Theano 后端一起使用已经有一段时间了。其结果是大量的工作和强大的社区知识库,深度学习开发人员可以轻松地将其从 Theano 后端移植到 TensorFlow 后端。甚至权重在后端之间也是可移植的,这意味着预训练模型只需进行一些调整即可轻松交换后端。Keras 和 Theano 的研究与 TensorFlow 和其他后端保持相关性。此外,Keras 还免费提供许多学习资源、文档和代码示例。
Keras 应用程序
Keras 功能(例如拟合生成器、数据预处理和实时数据增强)允许开发人员使用较小的训练数据集训练强大的图像分类器。Keras 带有内置的预训练图像分类器模型,包括:盗梦空间-ResNet-v2,盗梦空间-v3,移动网络,ResNet-50型,VGG16型,VGG19型和Xception的.
注意:这些模型的权重使用有几种不同的许可证,因为这些模型的来源不同。
使用 Keras,只需几行代码即可定义复杂的模型。Keras 对于使用小型训练数据集训练卷积神经网络特别有用。尽管 Keras 在图像分类应用中得到了更多的应用,但它也可用于文本和语音的自然语言处理 (NLP) 应用程序。
在线教程
- 麻省理工学院人工智能视频教程 – 麻省理工人工智能课程
- 人工智能入门 – 人工智能基础学习。Peter Norvig举办的课程
- EdX 人工智能 – 此课程讲授人工智能计算机系统设计的基本概念和技术。
- 人工智能中的计划 – 计划是人工智能系统的基础部分之一。在这个课程中,你将会学习到让机器人执行一系列动作所需要的基本算法。
- 机器人人工智能 – 这个课程将会教授你实现人工智能的基本方法,包括:概率推算,计划和搜索,本地化,跟踪和控制,全部都是围绕有关机器人设计。
- 机器学习 – 有指导和无指导情况下的基本机器学习算法
- 机器学习中的神经网络 – 智能神经网络上的算法和实践经验
- 斯坦福统计学习
有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
人工智能书籍
- OpenCV(中文版).(布拉德斯基等)
- OpenCV+3计算机视觉++Python语言实现+第二版
- OpenCV3编程入门 毛星云编著
- 数字图像处理_第三版
- 人工智能:一种现代的方法
- 深度学习面试宝典
- 深度学习之PyTorch物体检测实战
- 吴恩达DeepLearning.ai中文版笔记
- 计算机视觉中的多视图几何
- PyTorch-官方推荐教程-英文版
- 《神经网络与深度学习》(邱锡鹏-20191121)
- …
第一阶段:零基础入门(3-6个月)
新手应首先通过少而精的学习,看到全景图,建立大局观。 通过完成小实验,建立信心,才能避免“从入门到放弃”的尴尬。因此,第一阶段只推荐4本最必要的书(而且这些书到了第二、三阶段也能继续用),入门以后,在后续学习中再“哪里不会补哪里”即可。
第二阶段:基础进阶(3-6个月)
熟读《机器学习算法的数学解析与Python实现》并动手实践后,你已经对机器学习有了基本的了解,不再是小白了。这时可以开始触类旁通,学习热门技术,加强实践水平。在深入学习的同时,也可以探索自己感兴趣的方向,为求职面试打好基础。
第三阶段:工作应用
这一阶段你已经不再需要引导,只需要一些推荐书目。如果你从入门时就确认了未来的工作方向,可以在第二阶段就提前阅读相关入门书籍(对应“商业落地五大方向”中的前两本),然后再“哪里不会补哪里”。
有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓