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

Python与深度学习第四讲Keras 简介

toyiye 2024-06-21 12:07 9 浏览 0 评论

Keras 是一个Python 深度学习框架,可以方便地定义和训练几乎所有类型的深度学习模型。Keras 最开始是为研究人员开发的,其目的在于快速实验。因此,对于已理解和掌握了一些深度学习理论基础的初学者来说选Keras可以较快的实现深度学习编程的实操应用。对于Keras框架而言,其 具有以下重要特性。

? 相同的代码可以在 CPU或 GPU 上无缝切换运行。

? 具有用户友好的 API,便于快速开发深度学习模型的原型。

? 内置支持卷积网络(用于计算机视觉)、循环网络(用于序列处理)以及二者的任意组合。

? 支持任意网络架构:多输入或多输出模型、层共享、模型共享等。这也就是说,Keras能够构建任意深度学习模型,无论是生成式对抗网络还是神经图灵机。

Keras 基于宽松的MIT 许可证发布,这意味着可以在商业项目中免费使用它。它与所有版本的Python 都兼容(截至2017 年年中,从Python 2.7 到Python 3.6 都兼容)。Keras 已有200 000 多个用户,既包括创业公司和大公司的学术研究人员和工程师,也包括研究生和业余爱好者。Google、Netflix、Uber、CERN、Yelp、Square 以及上百家创业公司都在用Keras 解决各种各样的问题。Keras 还是机器学习竞赛网站Kaggle 上的热门框架,最新的深度学习竞赛中,几乎所有的优胜者用的都是Keras 模型,如图所示。

图1 各种深度学习框架的热度的变化趋势

(1)Keras、TensorFlow、Theano 和CNTK

Keras 是一个模型级(model-level)的库,为开发深度学习模型提供了高层次的构建模块。它不处理张量操作、求微分等低层次的运算。相反,它依赖于一个专门的、高度优化的张量库来完成这些运算,这个张量库就是Keras 的后端引擎(backend engine)。Keras 没有选择单个张量库并将Keras 实现与这个库绑定,而是以模块化的方式处理这个问题(见图2)。因此,几个不同的后端引擎都可以无缝嵌入到Keras 中。目前,Keras 有三个后端实现:TensorFlow 后端、Theano 后端和微软认知工具包(CNTK,Microsoft cognitive toolkit)后端。未来Keras 可能会扩展到支持更多的深度学习引擎。

图2 深度学习模块化机构

TensorFlow、CNTK 和Theano 是当今深度学习的几个主要平台。Theano 由蒙特利尔大学的MILA 实验室开发,TensorFlow 由Google 开发,CNTK 由微软开发。你用Keras 写的每一段代码都可以在这三个后端上运行,无须任何修改。也就是说,你在开发过程中可以在两个后端之间无缝切换,这通常是很有用的。例如,对于特定任务,某个后端的速度更快,那么我们就可以无缝切换过去。我们推荐使用TensorFlow 后端作为大部分深度学习任务的默认后端,因为它的应用最广泛,可扩展,而且可用于生产环境。

通过TensorFlow(或Theano、CNTK),Keras 可以在CPU 和GPU 上无缝运行。在CPU 上运行时,TensorFlow 本身封装了一个低层次的张量运算库,叫作Eigen;在GPU 上运行时,TensorFlow封装了一个高度优化的深度学习运算库,叫作NVIDIA CUDA 深度神经网络库(cuDNN)。

(2)使用Keras 开发:概述

你已经见过一个Keras 模型的示例,就是MNIST 的例子。典型的Keras 工作流程就和那个例子类似。

(1) 定义训练数据:输入张量和目标张量。

(2) 定义层组成的网络(或模型),将输入映射到目标。

(3) 配置学习过程:选择损失函数、优化器和需要监控的指标。

(4) 调用模型的fit 方法在训练数据上进行迭代。

定义模型有两种方法:一种是使用Sequential 类(仅用于层的线性堆叠,这是目前最常见的网络架构),另一种是函数式API(functional API,用于层组成的有向无环图,让你可以构建任意形式的架构)。前面讲过,这是一个利用Sequential 类定义的两层模型(注意,我们向第一层传入了输入数据的预期形状)。

from keras import models

from keras import layers

model = models.Sequential()

model.add(layers.Dense(32, activation='relu', input_shape=(784,)))

model.add(layers.Dense(10, activation='softmax'))

下面是用函数式API 定义的相同模型。

input_tensor = layers.Input(shape=(784,))

x = layers.Dense(32, activation='relu')(input_tensor)

output_tensor = layers.Dense(10, activation='softmax')(x)

model = models.Model(inputs=input_tensor, outputs=output_tensor)

利用函数式API,你可以操纵模型处理的数据张量,并将层应用于这个张量,就好像这些层是函数一样。一旦定义好了模型架构,使用Sequential 模型还是函数式API 就不重要了。接下来的步骤都是相同的。配置学习过程是在编译这一步,你需要指定模型使用的优化器和损失函数,以及训练过程中想要监控的指标。下面是单一损失函数的例子,这也是目前最常见的。

from keras import optimizers

model.compile(optimizer=optimizers.RMSprop(lr=0.001),

loss='mse',

metrics=['accuracy'])

最后,学习过程就是通过fit() 方法将输入数据的Numpy 数组(和对应的目标数据)传入模型,这一做法与Scikit-Learn 及其他机器学习库类似。

model.fit(input_tensor, target_tensor, batch_size=128, epochs=10)

在接下来的几讲里,你将会在这些问题上培养可靠的直觉:哪种类型的网络架构适合解决哪种类型的问题?如何选择正确的学习配置?如何调节模型使其给出你想要的结果?我们将几讲中讲解三个基本示例,分别是二分类问题、多分类问题和回归问题。

(摘自python深度学习)

相关推荐

为何越来越多的编程语言使用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)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码