百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

入门深度学习框架Keras不可错过的好文章

toyiye 2024-06-21 12:24 7 浏览 0 评论

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 后端。

可选依赖关系

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 都可。

将 Keras 用作其他框架的 API

Keras 各层及模型均与纯 TensorFlow 张量完全兼容;因此,Keras 为 TensorFlow 提供了良好的模型定义附件。您甚至可以同时使用 Keras 和其他 TensorFlow 库。Keras 现已成为 TensorFlow 核心的正式组成部分。

从 TensorFlow 后端切换至其他某个正式支持的 Keras 后端十分简单,只需在 JavaScript 对象表示法 (JSON) 配置文件中进行一项更改即可

目前,可以使用 Keras 作为以下这些框架的 API:

  • Keras 与 Theano。最近淘汰的 Theano 是 Keras 最先支持的后端,后被 TensorFlow 所取代。TensorFlow 支持大部分 Theano 开发的 Keras 模型。要使用 GPU 运行 Theano 后端,
  • Keras 与 CNTK。Keras 对 Microsoft Cognitive Toolkit (CNTK) 后端的支持仍处于测试阶段。
  • Keras 与 Deeplearning4j。Deeplearing4j 可使用其 deeplearing4j-modelimport 模块来导入大部分 Keras 模型。目前,Deeplearning4j 可支持导入有关层次、损失、激活、初始化程序、正则化项、约束条件、度量标准和优化程序的模型信息。
  • Keras 与 Apache MXNet。Keras 对 Apache MXNet 后端的支持仍处于早期测试阶段。这是由 Distributed (Deep) Machine Learning Community 主导的工作。此后端正逐步变为另一个正式支持的 Keras 后端。

结束语

Keras 不同于其他深度学习框架。按照设计,它旨在成为神经网络建模的 API 规范。它可作为用户界面,也可扩展它在其中运行的其他深度学习框架后端的功能。

Keras API 已成为 Google TensorFlow 的一部分。Keras 同时还正式支持 CNTK、Deeplearning4j,很快就会支持 Apache MXNet。

由于这一广泛的支持,Keras 已成为了实现框架间迁移的实际工具。开发人员不仅可以移植深度学习神经网络算法和模型,还可以移植预先训练的网络和权重。

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码