Keras新手“入坑”指南

 

对于所有想要开始深度学习的人来说,有很多神经网络框架、库和api等都是非常重要的。可是…为什么要用Keras呢?

Keras是一种高级的神经网络API,它运行在许多底层库之上,这些库被用作后端,包括TensorFlow、Theano、CNTK和PlaidML等。Keras代码是可移植的,这意味着你可以使用Keras 实现一个神经网络,然后使用Theano作为一个备份,再指定后端在TensorFlow上运行,并且不需要对代码进行进一步的更改。数据科学家和机器学习专家Charles Martin总结了这样一句话:

我们已经使用这些算法超过10年了。这并不容易,但对一个好的黑客来说是足够的。对我来说,Keras使得那些被认为不可用的人工智能产品能够发挥它们的价值。

Keras是一种易于使用的神经网络库,它可以促进简单直观的语法。在某种程度上讲,它还面向神经网络技术消费者,而不只是生产商。这两组之间的界限并不是很明确;确切地说,到底是什么构成了机器学习算法的设计和实现,而不是修改已经准备好的机器呢?这就类似于是先有鸡还是先有蛋的问题,这并不是一个合适的讨论话题。然而,和其他已经建立的主流神经网络库相比,Keras更适合于数据科学的实践。事实上,我想说的是,Keras是任何一个使用神经网络的数据科学家的工具。

这篇教程的目的是让你以最快地速度了解Keras,如果你已经熟悉了神经网络,那就不是一个特别困难的任务了。为了达到这个目的,最好对神经网络有一定的了解。

步骤一:神经网络基础

神经网络是基于生物学中神经网络的基本原理,在理解和抽象了人脑结构和外界刺激响应机制后,以网络拓扑知识为理论基础,模拟人脑的神经系统对复杂信息的处理机制的一种数学模型。该模型以并行分布的处理能力、高容错性、智能化和自学习等能力为特征,将信息的加工和存储结合在一起。它实际上是一个有大量简单元件相互连接而成的复杂网络,具有高度的非线性,能够进行复杂的逻辑操作和非线性关系实现的系统。

神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激活函数。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,神经网络就是通过这种方式来模拟人类的记忆。网络的输出则取决于网络的结构、网络的连接方式、权重和激活函数。

神经网络中,神经元处理单元可表示不同的对象,例如特征、字母、概念,或者一些有意义的抽象模式。网络中处理单元的类型分为三类:输入单元、输出单元和隐单元。输入单元接受外部世界的信号与数据;输出单元实现系统处理结果的输出;隐单元是处在输入和输出单元之间,不能由系统外部观察的单元。神经元间的连接权值反映了单元间的连接强度,信息的表示和处理体现在网络处理单元的连接关系中。神经网络是一种非程序化、适应性、大脑风格的信息处理,其本质是通过网络的变换和动力学行为得到一种并行分布式的信息处理功能,并在不同程度和层次上模仿人脑神经系统的信息处理功能。

神经网络,是一种应用类似于大脑神经突触连接结构进行信息处理的数学模型,它是在人类对自身大脑组织结合和思维机制的认识理解基础之上模拟出来的,它是根植于神经科学、数学、思维科学、人工智能、统计学、物理学、计算机科学以及工程科学的一门技术。

 

步骤二:Keras基础知识

首先,Keras到底是什么?

Keras是一个高级神经网络API,用Python编写,能够在TensorFlow、CNTK或Theano上面运行。它的开发重点是支持快速实验,能够以最短的时间从想法到结果。如果你需要有如下特点的深度学习库:

1、允许简单快速的原型设计(友好性、模块性和可扩展性)。

2、支持卷积网络和循环网络,以及两者的组合。

3、在CPU和GPU上无缝运行。

那么你就可以使用Keras。

步骤三:Keras的概述

Valerio Maggio于2017年在伦敦的PyData举行了一场精彩的演讲,题为“十个步骤学习Keras”。为了对Keras更深入的理解,可以拿Keras与其他库相比,以及使用它来完成事情,请花上90分钟看视频。然后看看下面链接的几页文档,以了解Keras是如何处理模型实现的。

1、Keras模型

2、开始使用ker序列化的顺序模型

3、开始使用kerapi函数API

如果你仍然有疑问,为什么你会选择Keras而不是TensorFlow,请读一下这篇文章:

TensorFlow还是Keras?我应该学哪一个?

最后,关于更改Keras后端,请参阅这个文档页面:

Keras后端

步骤四:慢慢地学习Keras

让我们做一件事:当人们开始使用一个新的深度学习库时,首先要做的事情之一就是:实现一个简单的逻辑回归模型。

如果你在之前的步骤中观看了Valerio的视频,那么你可能已经得到了你需要的东西。如果没有,那就从谈话中引用他的笔记。一般情况下,你可以阅读整个过程,再对TensorFlow、Theano和Keras的实现代码进行比较。如果你只对Keras 代码感兴趣,那么可以跳过大约一半。

多层完全连接网络

首先,确保你已经查看了下面的Keras文档页面,这些文档页面描述了这两种模式(已经在上面提到的)和层。

1、开始使用keras序列化的顺序模型

2、关于Keras的层

3、Keras的核心层

现在,请遵循这个基础,通过使用神经网络去实现一些关于三连棋游戏的东西。

Keras教程:使用神经网络识别三连棋游戏的胜利者

完成了这些步骤之后,你就应该准备好实现一些更复杂的架构了。

 

步骤五:实现卷积神经网络

要在Keras中实现卷积神经网络(CNN),首先要阅读它的卷积层的文档:

Keras卷积层

在此之后,请查看在Keras中关于CNNs的以下教程。第一种方法采用了较慢的方法,并且涵盖了你现在应该知道的大部分内容,而第二种则考虑了一些额外的主题,例如避免过度使用。这并不一定是一种非此即彼的方法;你可能会在两种模式中发现各自的价值:

Keras教程:Python的终极初学者指南,高级数据科学

麦克欧文的卷积神经网络的介绍

阅读附带的博客文章

步骤六:实现一个循环的神经网络

要在Keras中实现一个循环的神经网络(RNN),首先要阅读它的循环层的文档:

Keras循环层

在此之后,尝试看Chris Albon的教程:实现一个长期的短期记忆(LSTM)网络——一种主要的RNN:

LSTM循环性神经网络

阅读附带的幻灯片

步骤七:接下来该做什么?

在这一点上,你应该对Keras有一个坚实的理解,包括为什么要使用它,它在某些情况下优于其他库的优点,并使用它来实现各种网络架构。你现在是个专家,对吧?

好吧,也许不是。但希望你已经掌握了基本知识。当你想要超越基本的时候,最好的方法就是阅读Keras的官方教程:

Keras教程

在此之后,查看Keras示例,其中包括了远景模型示例、文本和序列示例、生成模型示例等等。

Keras的示例

另外,如何挑战你自己,对你在之前的步骤中实现的一些模型进行微调呢?更改优化器,添加扩展层,使用激活函数。或者使用一些Keras量度标准来回顾并判断你的模型的性能。Keras文档是一个很好的开始:

Keras指标

Keras的常见问题

原文链接:https://www.kdnuggets.com/2017/10/seven-steps-deep-learning-keras.html

 

时间: 2024-12-09 12:51:41

Keras新手“入坑”指南的相关文章

各位前辈,新手入坑可否?

问题描述 小的屌丝一枚,工资实在太低了.考虑了很久,想入编程这行.平时有时间,但是经过几天的看书和看CSDN上的课程完全看不懂.所以想请教各位前辈怎么入这一行.看了很多帖子觉得非常高大上,可又实在不懂从哪方面入门1.学什么?2.怎么学?3.学了怎么用?已有工具,笔记本一台,活人一个请求还请前辈们不啬赐教,指点迷津.小生在此先行谢过. 解决方案 解决方案二:如果你身边有搞IT的,最好请教下他,每个人的情况不同.你的学历.目前从事的行业.你的基础,以及你的决心和期望值都是需要考虑的因素.特别是你的决

React + Redux 入坑指南

Redux 原理 1. 单一数据源 all states => Store 随着组件的复杂度上升(包括交互逻辑和业务逻辑),数据来源逐渐混乱,导致组件内部数据调用十分复杂,会产生数据冗余或者混用等情况. Store 的基本思想是将所有的数据集中管理,数据通过 Store 分类处理更新,不再在组件内放养式生长. 2. 单向数据流 dispatch(actionCreator) => Reducer => (state, action) => state 单向数据流保证了数据的变化是有

深度炼丹指北:从“入坑”到“放弃”

随着人工智能的火热,越来越多朋友想要进入深度学习领域,但是总会遇到一个问题:想要系统的入门,但是身边的资料铺天盖地,不知道该从哪里入手.因此,本文想通过自己的一些学习经历和平时收集的一些资料,为大家提供一个深度学习的炼丹清单,以期望帮助大家对深度学习有一个更详细而全面的学习. 一.数学篇 1.1 知识要点 1.1.1 线性代数 标量.向量.矩阵.张量.范数.特征分解.奇异值分解.距离 1.1.2 概率论 随机变量.概率分布.条件概率.贝叶斯公式.期望.方差.常见分布函数.Lagrange乘子法.

ACL的「深度学习热」:论文纷纷「入坑」,企业蜂拥「入局」|ACL 2017

演讲结束,掌声响起. 赵衡急急忙忙收拾东西离开座位,希望在人潮散场前赶紧离开 ACL 2017 的主会场,好找个地方看看接下来的议程--但也已经晚了.尽管大门试图严密地隔开场内场外,但赵衡推开门时,会场外熙熙攘攘.甚至显得有些吵闹的对话声涌进大厅,引来不少观众的回头侧目. 赵衡背着包,磕磕碰碰地跟着人海移动到下一个会场时,他心里只暗暗后悔没有再早一点离场. 「我猜主办方也没想到有这么多人,今年的场子定得太小了,」赵衡半是无奈半是欣慰地感慨道.作为国内 Top 5 高校的博士生,他感慨自己遇上了

JAVA 入坑教程 | 章节十 基本数学运算Math类

点击左上角[目录] 简单点,代码的方式简单点,装逼的方式请省略,我们又不是演员,别设计那些情节. 有问题可加入安卓QQ群: 246231638 在高数中总会运用到各种类型的计算,如正弦.余弦.正切.π.反正切.底数e的参数次方等等,那这些在计算机中如何表述?当然,可以用数值类型(如int.double.float)去模拟所有方法的实现,但是这样等同于解一个方程式的值,痛苦不堪,其实在Java中已经帮我们封装好了这些函数的调用,就是这个Math 类,先来看看其API有哪些方法可以给我们玩的. AP

JAVA 入坑教程 | 章节一 基础概念

JAVA 章节一 基础概念 学JAVA,首先得知道JAVA是什么,JAVA能做什么事,JAVA有哪些概念和特性,首先我们从JAVA是什么开始入手带大家入坑: 前两篇内容我们提到了,JAVA的一些概念和特性,这篇文章我们来补足剩余的基本概念,当然,每篇文章的概念性东西会根据节奏走,每篇文章不会一次性带入太多的概念. OOP:Object Oriented Programming , 面向对象的程序设计 JAVA  三大特性 JAVA  其它的基础概念 一.OOP思想 首先我们来回顾下历史,OOP的

JAVA 入坑教程 | 章节八 什么是Number 类?

JAVA 入坑教程 | 章节八 什么是Number 类?为什么需要Number类?怎么使用? 来看下前面提及的基本数据类型,<JAVA 入坑教程 | 章节二 基本数据类型>,再来看一张图片先: 在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形.所谓的内置数据类型其实就是:byte.int.long.double 等.为了解决这个问题,Java 为每一个内置数据类型提供了对应的包装类. 所有的包装类(Integer.Long.Byte.Double.Float.Short)

JAVA 入坑教程 | 章节九 详解java的装箱和拆箱

简单点,代码的方式简单点,装逼的方式请省略,我们又不是演员,别设计那些情节 什么是装箱?什么是拆箱?代码如何展示? 装箱过程是怎样的?拆箱过程是怎样的? 有问题可加入安卓QQ群: 246231638 装箱和拆箱的概念 简单点,代码的方式简单点,装逼的方式请省略,我们又不是演员,别设计那些情节: //自动装箱 Integer total = 9999; //自动拆箱 int totalprim = total; 装箱:就是自动将基本数据类型转换为包装器类型: 拆箱:就是自动将包装器类型转换为基本数

软件项目“免坑”指南

"谁也无法改变现状,唯有无数程序员血洒大地,才能使项目重建天日."这一点也不夸张,软件项目做烂了就是个坑,参与者也不过是填坑的.就像是在魔兽世界战场遇到国家队一样,你赢也赢不了,出也出不去. 一.坑有多深? 当我们进入一个项目时,通过不断观察我们可以发现我们的项目到底是不是一个坑.造坑的项目,往往具有某些"臭味",以下是我的一些认识,这些"臭味"即是项目健康状态不佳的明显标志: ● 编码规范形同废纸,代码质量低下.每个项目都有编码规范,但真正严格