Board logo

标题: Keras 入门 探究此基于 Python 的深度学习库 [打印本页]

作者: look_w    时间: 2018-3-17 11:35     标题: Keras 入门 探究此基于 Python 的深度学习库

Keras 是基于 Python 的深度学习库,不同于其他深度学习框架。                充当神经网络的高级 API 规范。它既可作为用户界面,也可扩展它在其中运行的其他深度学习框架后端的功能。
Keras 起初是作为学术界热门 Theano 框架的简化前端。此后,Keras API 成为了 Google TensorFlow                的一部分。Keras 正式支持 Microsoft Cognitive Toolkit (CNTK)、Deeplearning4J,不久之后还将支持                Apache MXNet。
鉴于获得了广泛的支持,Keras                作为框架间迁移工具的地位已不可撼动。开发人员不仅可以移植深度学习神经网络算法和模型,还可以移植预先训练的网络和权重。
关于 KerasKeras 名称的起源
Chollet 创建了 Keras                    作为开放式神经电子智能机器人操作系统 (ONEIROS) 机器人研究项目的神经网络的 API。ONEIROS                        这一名称是对古希腊史诗《奥德赛》的致意,在这部史诗中,神话人物                        OneiroiOneiros                    的单数形式)为人类指明了两条进入梦境的路:一条路穿过宏伟的象牙之门进入噩梦,另一条路则穿过低矮的兽角之门,最终呈现一片神圣的景象。Keras                        在希腊语中意为,这个名称非常合适,因为 Keras API 旨在为与神经网络协同使用提供一条捷径。

Keras 是开源 Python 包,由麻省理工学院 (MIT) 许可发行,由 François Chollet、Google、Microsoft                和其他贡献者共同持有该软件的部分版权。
Keras 前端支持在研究中快速构建神经网络模型的原型。此 API 易于学习和使用,并且具有易于在框架间移植模型的附加优势。
由于 Keras 的独立性,使用时无需与运行它的后端框架进行交互。Keras                具有自己的图形数据结构,用于定义计算图形:它不依靠底层后端框架的图形数据结构。此方法使您可以免于学习对后端框架进行编程,正因如此,Google                已选择将 Keras API 添加到其 TensorFlow 核心。
本文将概述 Keras,包括此框架的优势、支持的平台、安装注意事项以及支持的后端。
Keras 的优势为何要使用 Keras?它具有多种优势,包括:
Keras 应用程序借助拟合生成器、数据预处理和实时数据扩充等 Keras 功能,开发人员只需少量训练数据集便可训练出强大的图像分类器。Keras                    随附预先经过训练的内置图像分类器模型,包括
注:由于这些模型的来源各不相同,因此有若干不同的许可证用于控制这些模型的权重使用情况。
借助 Keras,只需几行代码即可定义复杂模型。Keras 尤其适合用于通过小型训练数据集来训练卷积神经网络。虽然 Keras                在图像分类应用程序中已获得了更广泛的使用,它同样也适用于文本和语音的自然语言处理 (NLP) 应用程序。
哪些平台支持 Keras?支持 Python 开发环境的平台同时也能支持 Keras。正式构建测试是在 Python V2.7x 和 V3.5 上运行的,但与 Keras                结合使用的后端需要特定平台才能访问支持的图形处理单元 (GPU)。大部分后端取决于其他软件,例如,NVIDIA® CUDA®                工具包和 CUDA 深度神经网络库 (cuDNN)。
TensorFlow 是 Keras 的缺省后端,但它还支持 Theano 和 CNTK 后端。Apache MXNet                的支持工作还在进行当中,同时也为 Keras 提供了 R 接口。许多供应商都已将 Keras API 移植到其深度学习产品中,由此而能够导入                Keras 模型。例如,基于 Java® 的后端 Eclipse Deeplearning4j,便能够导入 Keras                模型。此外,Scala 包装器也可用于 Keras。因此,Keras 平台支持成为了一个争议点。更重要的是确保目标平台支持您所选的 Keras                后端。
有关哪些平台支持 TensorFlow 的更多信息,请参阅 。有关哪些平台支持 Theano 的详细信息,请阅读 。有关哪些平台支持 CNTK 的更多信息,请参阅 。
可选依赖关系Keras 通过使用开源 Hierarchical Data Format 5 (HDF5) 二进制格式来管理数据。因此,它需要使用 HDF5 及其                h5py Python 包装器,才能将 Keras 模型保存至磁盘。Keras 通过使用开源 GraphViz DOT                格式来绘制图形。因此,它需要使用 GraphViz 及其 pydot Python 包装器,才能直观显示数据。Keras GPU 支持还需要使用                cuDNN 库。
从源代码构建 Keras由于 Keras 是一个纯 Python 包,因此没有理由从源代码进行构建。Keras 不含任何特定于平台的后端代码。强烈建议改为从 Python                Package Index (PyPI) 安装 Keras。
Keras 安装注意事项上文中已提到,Keras 可在支持 Python                开发环境的任何平台上运行。这足以训练和测试大部分简单示例和教程。大部分专家强烈建议,针对研究或商业开发等应用程序使用高性能计算 (HPC)                平台。
由于 Keras 使用第三方后端,因此无任何安装注意事项。后端将负责执行硬件加速。总之,安装 Keras 后端的开发人员应考虑以下因素和选项:
处理器和内存需求深度学习算法为计算密集型算法,至少需要一个具有矢量扩展的快速多核 CPU。此外,一个或多个支持高端 CUDA 的 GPU                卡是深度学习环境的标配。
深度学习进程通过使用共享内存中的缓冲区相互进行通信。因此,分配的内存应已足够。大部分专家由此还建议采用较大的 CPU 和 GPU                RAM,因为从性能和能源使用的角度来看,内存传输非常昂贵。更大的 RAM 可避免这些操作。
虚拟机选项用于深度学习的虚拟机 (VM) 目前最适合有许多核心的以 CPU 为中心的硬件。因为主机操作系统控制着物理 GPU,所以在 VM 上实现 GPU                加速很复杂。主要有两种方法:
Docker 安装选项在 Docker 容器或 Kubernetes 集群中运行 Keras 存在诸多优势。Keras 存储库包含一个 Docker 文件,具有针对 Mac                OS X 和 Ubuntu 的 CUDA 支持。此映像支持 Theano 或 TensorFlow 后端。使用 Docker                的优势主要在于,后端可以访问物理 GPU 核心(设备)并在其中运行。
云安装选项在云服务上运行 Keras 时有许多选项。Keras                可用于在一个供应商生态系统上训练模型,但只需稍作调整即可在另一个供应商生态系统上用于生产部署。
将 Keras 用作其他框架的 APIKeras 各层及模型均与纯 TensorFlow 张量完全兼容;因此,Keras 为 TensorFlow                提供了良好的模型定义附件。您甚至可以同时使用 Keras 和其他 TensorFlow 库。Keras 现已成为 TensorFlow                    核心的正式组成部分。有关详细信息,请阅读此。
从 TensorFlow 后端切换至其他某个正式支持的 Keras 后端十分简单,只需在 JavaScript 对象表示法 (JSON)                配置文件中进行一项更改即可。有关详细信息,请参阅 。
目前,可以使用 Keras 作为以下这些框架的 API:
结束语Keras 不同于其他深度学习框架。按照设计,它旨在成为神经网络建模的 API                规范。它可作为用户界面,也可扩展它在其中运行的其他深度学习框架后端的功能。
Keras API 已成为 Google TensorFlow 的一部分。Keras 同时还正式支持                CNTK、Deeplearning4j,很快就会支持 Apache MXNet。
由于这一广泛的支持,Keras                已成为了实现框架间迁移的实际工具。开发人员不仅可以移植深度学习神经网络算法和模型,还可以移植预先训练的网络和权重




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0