摘要:你对学习使用Keras感兴趣吗?你是否已经对神经网络的工作方式有一定的了解?看看这个精简的七步计划,从新手开始尽快地掌握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文档是一个很好的开始: