什么是Keras?
Keras是一个高层神经网络API,Keras由纯Python编写而成并基Tensorflow、Theano后端。Keras 为支持快速实验而生,能够把你的idea迅速转换为结果,如果你有如下需求,请选择Keras:
- 简易和快速的原型设计(keras具有高度模块化,极简,和可扩充特性)
- 支持CNN和RNN,或二者的结合
- 无缝CPU和GPU切换
Keras的设计原则
- 用户友好:Keras是为人类而不是天顶星人设计的API。用户的使用体验始终是我们考虑的首要和中心内容。Keras遵循减少认知困难的最佳实践:Keras提供一致而简洁的API, 能够极大减少一般应用下用户的工作量,同时,Keras提供清晰和具有实践意义的bug反馈。
- 模块性:模型可理解为一个层的序列或数据的运算图,完全可配置的模块可以用最少的代价自由组合在一起。具体而言,网络层、损失函数、优化器、初始化策略、激活函数、正则化方法都是独立的模块,你可以使用它们来构建自己的模型。
- 易扩展性:添加新模块超级容易,只需要仿照现有的模块编写新的类或函数即可。创建新模块的便利性使得Keras更适合于先进的研究工作。
- 与Python协作:Keras没有单独的模型配置文件类型(作为对比,caffe有),模型由python代码描述,使其更紧凑和更易debug,并提供了扩展的便利性。
典型Keras开发流程
1.定义训练数据:输入张量和目标张量。
2.定义组成的网络或model,将输入映射到目标。
3.配置学习过程:选择损失函数、优化器和需要监控的指标。
4.调用model的fit()在训练数据集上迭代。
定义model有两种办法:
-
使用Sequential类定义的两层model,目前最常见的通用网络架构
-
函数式API,用于层组成的有向无环图,搭建任意形式架构
使用Sequential类定义的两层model。
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)
out_tensor = layers.Dense(10,activation='softmax')(x)
model = models.Model(inputs=input_tensor,outputs=out_tensor)
配置学习过程,选择损失函数、优化器和需要监控的指标。
from keras import optimizers
model.compile(optimizer='rmsprop',loss='mse',metrics=['accuracy'])
训练model
model.fit(input_tensor,target_tensor,batch_size=128,epoch=10)
网友评论