Keras入门必读教程:手把手从安装到解决实际问题

导读:Keras是目前深度学习研究领域非常流行的框架 。
作者:史丹青
来源:华章科技
Keras入门必读教程:手把手从安装到解决实际问题
文章图片
Keras入门必读教程:手把手从安装到解决实际问题】01Keras简介与安装
Keras是目前深度学习研究领域非常流行的框架 , 相比于TensorFlow , Keras是一种更高层次的深度学习API 。
Keras使用Python编写而成 , 包含了大量模块化的接口 , 有很多常用模型仅需几行代码即可完成 , 大大提高了深度学习的科研效率 。 它是一个高级接口 , 后端可支持TensorFlow、Theano、CNTK等多种深度学习基础框架 , 默认为TensorFlow , 其他需要单独设置 。
目前 , 谷歌已经将Keras库移植到TensorFlow中 , 也让Keras成了TensorFlow中的高级API模块 。
Keras具备了三个核心特点:
允许研究人员快速搭建原型设计 。 支持深度学习中最流行的卷积神经网络与循环神经网络 , 以及它们两者的组合 。 可以在CPU与GPU上无缝运行 。Keras的口号是“为人类服务的深度学习” , 在整体的设计上坚持对开发者友好 , 在API的设计上简单可读 , 将用户体验放在首位 , 希望研发人员可以以尽可能低的学习成本来投入深度学习的开发中 。
Keras的API设计是模块化的 , 用户可以基于自己设想的模型对已有模块进行组装 , 其中如神经网络层、损失函数、优化器、激活函数等都可以作为模块组合成新的模型 。 与此同时 , Keras的扩展性非常强大 , 用户可以轻松创建新模块用于科学研究 。
目前最简单的引入Keras的方法就是直接使用最新版本的TensorFlow , 可以通过以下引入方式在代码中使用Keras 。
fromtensorflowimportkeras此外 , Keras具有一个非常活跃的开发者社区 , 每天都会有大量的开源代码贡献者为Keras提供各种各样的功能 。 其中Keras-contrib是一个官方的Keras社区扩展版本 , 包含了很多社区开发者提供的新功能 , 为Keras的用户提供了更多选择 。
Keras-contrib的新功能通过审核后都会整合到Keras核心项目中 , 如果现在就想在项目中使用 , 需要单独安装 , 同样 , 可以使用pip工具直接安装 。
$sudopipinstallgit+https://www.github.com/keras-team/keras-contrib.git随着Karas加入TensorFlow , 为了更好地进行代码上的整合 , Keras-contrib项目被整合进了TensorFlowAddons 。
TensorFlowAddons是一个针对TensorFlow核心库功能的补充 , 集成了社区最新的一系列方法 。 由于AI领域发展的速度快 , 一些最新的算法无法立刻移植到TensorFlow核心库中 , 所以会优先在TensorFlowAddons中进行发布 。
可以使用pip的方式方便地安装TensorFlowAddons , 从而使用一些高级的API接口 。
$pipinstalltensorflow-addons02Keras使用入门
Keras包含两种模型类型 , 第一种是序列模型 , 第二种是函数式模型 。 其中后者属于Keras的进阶型模型结构 , 适用于多入多出、有向无环图或具备共享层的模型 , 具体可参考Keras官方文档 。 本节中主要通过介绍序列模型来带读者学习Keras的使用方法 。
所谓序列模型是指多个网络层线性堆叠的模型 , 结构如下列代码所示 , 该序列模型包含了一个784×32的全连接层、ReLU激活函数、32×10的全连接层以及softmax激活函数 。
fromtensorflow.keras.modelsimportSequentialfromtensorflow.keras.layersimportDense,Activationmodel=Sequential([Dense(32,input_shape=(784,)),Activation('relu'),Dense(10),Activation('softmax'),])也可以使用add()方法进行序列模型中网络层的添加 。
model=Sequential()model.add(Dense(32,input_dim=784))model.add(Activation('relu'))下面我们来看一个用Keras实现的神经网络二分类示例 , 网络结构非常简单 , 由两个全连接层构成 。 示例中包含了网络模型的搭建、模型的编译以及训练 , 读者可以在自己的设备上尝试运行此代码以熟悉Keras的使用 。