奇书网

奇书网>人工智能训练师 > 第二节 Keras简介与使用(第1页)

第二节 Keras简介与使用(第1页)

第二节Keras简介与使用

深度学习可用的工具很多,例如,Google开发的深度学习平台TensorFlow。但是TensorFlow使用起来相对复杂,所以本教材使用易用性更好的Keras来讲解深度学习的具体实现。

&hon编写的深度学习框架,使用TensorFlow、PytorTK作为后端运行。用纯Python编写意味着所有的Keras代码都是通过Python语句实现的,可以通过Python的代码编辑工具打开源代码进行学习。在学习Python编程的过程中,阅读Keras经典模块的Python代码是一种非常好的学习方式。

在Keras开发团队写的官方文档中,他们详细说明了设计Keras时遵循的原则。

(1)用户友好

Keras是为人类而不是“天顶星人”①设计的API,用户的使用体验始终是我们考虑的首要和中心内容。Keras遵循减少认知困难的最佳实践:Keras提供一致而简洁的API,能够极大减少一般应用下用户的工作量,同时,Keras还提供清晰和具有实践意义的bug反馈。

(2)模块性

模型可理解为一个层的序列或数据的运算图,完全可配置的模块可以用最少的代价自由组合在一起。具体而言,网络层、损失函数、优化器、初始化策略、激活函数、正则化方法都是独立的模块,你可以使用它们来构建自己的模型。

(3)易扩展性

添加新模块超级容易,只需要仿照现有的模块编写新的类或函数即可。创建新模块的便利性使得Keras更适合于先进的研究工作。

(4)与Python协作

Keras没有单独的模型配置文件类型(作为对比,caffe有),模型由Python代码描述,这样可以使其更紧凑和更易debug,也更易扩展。

作为一种高级深度学习工具,Keras构造深度学习网络简单直接、容易阅读,同时它能够自动构建层与层之间的连接,更便于学习者体会深度学习的能力。选用Keras作为深度学习的入门工具的原因如下。

数学知识较少的前提下,Keras可以进行简易和快速的原型设计,因为它具有高度模块化、极简和可扩充的特性。这里的模块化意味着可以直接调用许多模块,只需要知道模块的输入输出,而不必关心模块是如何实现的。通俗地讲,这种模块化的特性使得构建深度学习模型变得像搭积木一样容易。

Keras可以很方便地构建深度学习的两种重要的深度神经网络——卷积神经网络和递归神经网络,并且支持它们的组合。

深度学习的计算很多时候需要使用GPU,Keras可以在CPU和GPU之间实现无缝切换,这意味着使用者不必关心具体是通过CPU还是GPU计算,只需要关心训练结果即可。

图7-2给出了Keras的模块结构,其中有些是比较复杂的,读者现在还不需要完全了解它们,只需要了解到它们大致分成了下述六个部分,请结合后续的实例理解各个模块的含义和作用。

图7-2Keras的模块结构(来自Keras文档)

(1)后端

后端相当于底层计算接口,所有Keras编写的程序最后都会转化成TensorFlow的程序来运行。更直观地说,后端可以看作Keras和TensorFlow之间的翻译器,而Keras会自动完成这个翻译过程。

(2)网络配置

顾名思义,网络配置是与网络结构有关的各种参数。这里的网络指的是深度学习中的深度神经网络,可以将深度网络比喻成高楼大厦,这一部分就是与高楼大厦有关的各种结构和参数。例如,楼有几层,使用什么材料建造,每层层高多少米等。需要说明的是,这一部分并没有看起来那么简单,甚至某种意义上这部分是深度学习的精华和难点,往往需要多年的实践经验才能针对特定问题给出恰当的网络配置。读者们可以慢慢加强这方面的学习和思考。

(3)数据预处理

进行深度学习之前,通常要对数据进行处理。需要注意,本教材所提供的数据都是经过处理的,这是理想状况。很多实际问题中的数据并不是拿来就可以直接作为神经网络的原始输入数据的。例如,最简单的需要处理数据的情形就是数据缺失,也就是某些样本没有数值,这也是需要“预先”处理的,所以这个过程被形象地称为数据预处理。

(4)模型

Keras支持两种模型,一种是序贯模型,一种是函数式模型。本书主要使用序贯模型,但不会对这两种模型进行深入探讨。感兴趣的读者可以在掌握了本书内容后进一步学习。

(5)网络层

Keras支持大多数深度学习所使用的“网络层”。这些网络层可以形象地比喻成建筑用的各种建筑工具,如房梁、钢骨等,由它们构成最终的深度神经网络。

热门小说推荐

最新标签