Introduce
Keras是一个高级API,用Python编写,能够在TensorFlow、Theano或CNTK上运行。Keras提供了一个简单和模块化的API来创建和训练神经网络,隐藏了大部分复杂的细节。
How to install keras?
Keras 安装的话需要安装Theano和TensorFlow作为Keras的背景库
这里安装流程如下:
[python] view plain copy
pip install Theano
#If using only CPU
pip install tensorflow
#If using GPU
pip install tensorflow-gpu
pip install keras
笔者的开发环境是spyder,所以在命令行输入import keras 。显示如下的话:
表示安装成功
Attention:笔者测试了一个二元分类程序,运行的时候,各种报错,然后网上查询资料。得知keras 默认backend是tensorflow。但是keras 只对theano 友好,所以只需要安装theano就行,然后让theano作为keras的backend.
原话来自Jason Brownlee, Ph.D 。见下图:
https://machinelearningmastery.com/tutorial-first-neural-network-python-keras/---JasonBrownlee, Ph.D 写的学习keras 的资料,网页下面的评论这个博士几乎每个人都回复了,很耐心,而且个人觉得看这些评论是解决自己疑问的好地方!!!!!
<1>配置theano 作为backend 的方法
C盘---用户--.keras 文件夹下--keras.json
将”backend”:”tensorflow” 改为图上所示。
<2> 进入安装python目录下的site-packages文件下(这个不再多说,写py程序的人都知道这个文件夹存储着什么)----keras文件夹-----backend文件夹----打开__init__.py脚本
将_BACKEND=”tensorflow”改为上图所示,其默认为tensorflow。
Keras workflow
第1步:load data
第2步:创建模型
1、Sequential 这是最常用的
2、Functional API 设计复杂模型,如多个输出等
方式1:from keras.modelsimport Sequential
from keras.layersimport Dense, Activation
model =Sequential([Dense(10, input_shape=(nFeatures,)),Activation('linear') ])
方式2:from keras.modelsimport Sequential
from keras.layersimport Dense, Activation
model = Sequential()
model.add(Dense(10, input_shape=(nFeatures,)))
model.add(Activation('linear'))
方式1等价与方式2,注意的是在第一层要指定输入的特征的大小,如样本m*n,输入n
第3步:配置参数
model.compile(optimizer='rmsprop',loss='mse', metrics=['mse', 'mae'])
参数含义分别是:
1、指定一个优化器,来更新权重
2、指定损失函数
3、指定度量标准
Foroptimizer
Stochastic Gradient Descent ( SGD ),
Adam, Adam: A method for Stochastic Gradient Descent
RMSprop,
AdaGrad,
AdaDelta, etc.
RMSprop 大多数问题中最好的优化器
至于损失函数要根据你的目的不同而设置
binary-cross-entropy for a binary classification problem―――二元分类
categorical-cross-entropy for a multi-class classification problem――多元分类
mean-squared-error for a regression problem and so on.――均方根误差回归之类
第4步:训练模型
model.fit(trainFeatures,trainLabels, batch_size=4, epochs = 100)
第5步 模型评估
scores= model.evaluate(X, Y)
print("\n%s:%.2f%%" % (model.metrics_names[1], scores[1]*100))