python神经⽹络库keras_基于Python的深度学习库Keras⼊门
知识
Keras 是基于 Python 的深度学习库,不同于其他深度学习框架。Keras 充当神经⽹络的⾼级 API 规范。它既可作为⽤户界⾯,也可扩展它在其中运⾏的其他深度学习框架后端的功能。
Keras 起初是作为学术界热门 Theano 框架的简化前端。此后,Keras API 成为了 Google TensorFlow 的⼀部分。Keras 正式⽀持Microsoft Cognitive Toolkit (CNTK)、Deeplearning4J,不久之后还将⽀持 Apache MXNet。
鉴于获得了⼴泛的⽀持,Keras 作为框架间迁移⼯具的地位已不可撼动。开发⼈员不仅可以移植深度学习神经⽹络算法和模型,还可以移植预先训练的⽹络和权重。
关于 Keras
Keras 名称的起源Chollet 创建了 Keras 作为开放式神经电⼦智能机器⼈操作系统 (ONEIROS) 机器⼈研究项⽬的神经⽹络的 API。ONEIROS 这⼀名称是对古希腊史诗《奥德赛》的致意,在这部史诗中,神话⼈物Oneiroi(Oneiros 的单数形式)为⼈类指明了两条进⼊梦境的路:⼀条路穿过宏伟的象⽛之门进⼊噩梦,另⼀条路则穿过低矮的兽⾓之门,最终呈现⼀⽚神圣的景象。Keras 在希腊语中意为⾓,这个名
称⾮常合适,因为 Keras API 旨在为与神经⽹络协同使⽤提供⼀条捷径。
Keras 是开源 Python 包,由⿇省理⼯学院 (MIT) 许可发⾏,由 François Chollet、Google、Microsoft 和其他贡献者共同持有该软件的部分版权。
Keras 前端⽀持在研究中快速构建神经⽹络模型的原型。此 API 易于学习和使⽤,并且具有易于在框架间移植模型的附加优势。
由于 Keras 的独⽴性,使⽤时⽆需与运⾏它的后端框架进⾏交互。Keras 具有⾃⼰的图形数据结构,⽤于定义计算图形:它不依靠底层后端框架的图形数据结构。此⽅法使您可以免于学习对后端框架进⾏编程,正因如此,Google 已选择将 Keras API 添加到其 TensorFlow 核⼼。
本⽂将概述 Keras,包括此框架的优势、⽀持的平台、安装注意事项以及⽀持的后端。
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 随附预先经过训练的内置图像分类器模型,包括:Inception-ResNet-v2、Inception-v3、MobileNet、ResNet-50、VGG16、
VGG19 和 Xception。
注:由于这些模型的来源各不相同,因此有若⼲不同的许可证⽤于控制这些模型的权重使⽤情况。
借助 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 的更多信息,请参阅 TensorFlow ⼊门。有关哪些平台⽀持 Theano 的详细信息,请阅读 Theano ⽂档。有关哪些平台⽀持 CNTK 的更多信息,请参阅 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 后端的开发⼈员应考虑以下因素和选项:
处理器和内存需求
虚拟机选项
Docker 安装选项
云安装选项
处理器和内存需求
深度学习算法为计算密集型算法,⾄少需要⼀个具有⽮量扩展的快速多核 CPU。此外,⼀个或多个⽀持⾼端 CUDA 的 GPU 卡是深度学习环境的标配。
深度学习进程通过使⽤共享内存中的缓冲区相互进⾏通信。因此,分配的内存应已⾜够。⼤部分专家由此还建议采⽤较⼤的 CPU 和 GPU RAM,因为从性能和能源使⽤的⾓度来看,内存传输⾮常昂贵。更⼤的 RAM 可避免这些操作。
虚拟机选项
⽤于深度学习的虚拟机 (VM) ⽬前最适合有许多核⼼的以 CPU 为中⼼的硬件。因为主机操作系统控制着物理 GPU,所以在 VM 上实现GPU 加速很复杂。主要有两种⽅法:
GPU 直通:
仅适⽤于 1 类管理程序,⽐如 Citrix Xen、VMware ESXi、Kernel Virtual Machine 和 IBM® Power®。
基于 CPU、芯⽚集、管理程序和操作系统的特定组合,直通⽅法的开销可能会有所不同。通常,对于最新⼀代的硬件,开销要低得多。
⼀种给定的管理程序-操作系统组合仅⽀持特定的 NVIDIA GPU 卡。
GPU 虚拟化:
各⼤主要 GPU 供应商均⽀持,包括 NVIDIA GRID™、AMD MxGPU 和 Intel® Graphics Virtualization Technology。
最新版本在特定的较新 GPU 上⽀持开放计算语⾔ (OpenCL)。在⼤部分主要后端(包括 TensorFlow)上,不存在正式的 OpenCL ⽀持。
最新版的 NVIDIA GRID 可以在特定的较新 GPU 上⽀持 CUDA 和 OpenCL。
Docker 安装选项
在 Docker 容器或 Kubernetes 集中运⾏ Keras 存在诸多优势。Keras 存储库包含⼀个 Docker ⽂件,具有针对 Mac OS X 和Ubuntu 的 CUDA ⽀持。此映像⽀持 Theano 或 TensorFlow 后端。使⽤ Docker 的优势主要在于,后端可以访问物理 GPU 核⼼(设备)并在其中运⾏。
云安装选项
在云服务上运⾏ Keras 时有许多选项。Keras 可⽤于在⼀个供应商⽣态系统上训练模型,但只需稍作调整即可在另⼀个供应商⽣态系统上⽤于⽣产部署。
IBM Cloud® 数据科学和数据管理为 Python 环境提供了 Jupyter Notebook 和 Spark。Keras 和 TensorFlow 已预先安装。IBM Cloud 上的 Kubernetes 集可运⾏ Keras 和 TensorFlow Docker 映像。
Google Cloud:Google 提供了⼀些机器实例,它们能访问特定区域的 1、4 或 8 个 NVIDIA GPU 设备。同时还可以在容器化的 GPU ⽀持的 Jupyter Notebook 上运⾏ Keras 和 TensorFlow
Amazon Web Services:Amazon 提供了 Amazon Web Services 深度学习 Amazon Machine Image (AMI),以及可选的 NVIDIA GPU ⽀持,后者能在各种各样的 Amazon Elastic Compute Cloud 实例上运⾏。已预先安装 Keras、TensorFlow 和其他深度学习框架。AMI 可以⽀持多达 64 个 CPU 核⼼和多达 8 个 NVIDIA GPU (K80)。
Microsoft Azure:您可以在 Microsoft 数据科学虚拟机系列的 Microsoft Azure 机器实例上以 CNTK 后端安装 Keras,仅使⽤ CPU 或者包含最多四个 K80 GPU 都可。
ubuntu使用入门教程将 Keras ⽤作其他框架的 API
Keras 各层及模型均与纯 TensorFlow 张量完全兼容;因此,Keras 为 TensorFlow 提供了良好的模型定义附件。您甚⾄可以同时使⽤Keras 和其他 TensorFlow 库。Keras 现已成为 TensorFlow 核⼼的正式组成部分。有关详细信息,请阅读此博客⽂章。
从 TensorFlow 后端切换⾄其他某个正式⽀持的 Keras 后端⼗分简单,只需在 JavaScript 对象表⽰法 (JSON) 配置⽂件中进⾏⼀项更改即可。有关详细信息,请参阅 Keras ⽂档。
⽬前,可以使⽤ Keras 作为以下这些框架的 API:
Keras 与 Theano。最近淘汰的 Theano 是 Keras 最先⽀持的后端,后被 TensorFlow 所取代。TensorFlow ⽀持⼤部分 Theano 开发的 Keras 模型。要使⽤ GPU 运⾏ Theano 后端,请遵循此⽂档中有关 Theano 的部分来操作。
Keras 与 CNTK。Keras 对 Microsoft Cognitive Toolkit (CNTK) 后端的⽀持仍处于测试阶段。您可以阅读 Microsoft ⽂档,了解更多详细信息和资料。
Keras 与 Deeplearning4j。Deeplearing4j 可使⽤其 deeplearing4j-modelimport 模块来导⼊⼤部分 Keras 模型。⽬
前,Deeplearning4j 可⽀持导⼊有关层次、损失、激活、初始化程序、正则化项、约束条件、度量标准和优化程序的模型信息。有关更多信息,请访问 Deeplearning4j ⽂档。
Keras 与 Apache MXNet。Keras 对 Apache MXNet 后端的⽀持仍处于早期测试阶段。这是由 Distributed (Deep) Machine
Learning Community 主导的⼯作。此后端正逐步变为另⼀个正式⽀持的 Keras 后端。此 GitHub 存储库中提供了该后端的代码。
结束语
Keras 不同于其他深度学习框架。按照设计,它旨在成为神经⽹络建模的 API 规范。它可作为⽤户界⾯,也可扩展它在其中运⾏的其他深度学习框架后端的功能。
Keras API 已成为 Google TensorFlow 的⼀部分。Keras 同时还正式⽀持 CNTK、Deeplearning4j,很快就会⽀持 Apache MXNet。
由于这⼀⼴泛的⽀持,Keras 已成为了实现框架间迁移的实际⼯具。开发⼈员不仅可以移植深度学习神经⽹络算法和模型,还可以移植预先训练的⽹络和权重。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论