keras简化了构建深度学习的步骤
高层库
底层库为tensorflow
keras 人工神经网络官网,用Python编写,能够在TensorFlow,CNTK或Theano之上运行。
#encoding=utf-8
'''
Keras
另一种机器学习模型人工神经网络
人工神经网络有两个比较著名的框架,一个是诞生于LISA lab的Theano,一个是谷歌开源的Tensorflow
Keras是二者的高层应用API,简化了构建人工神经网络的步骤,让人工神经网络更容易实现
Windows下的Tensorflow还不是很成熟,所以接下来的实例中采用基于Theano的Keras
官网:https://keras.io/
1、人工神经网络简单介绍Neural Net
人工神经网络的是一种机器学习运算模型
计算学习的运算模型本质上来说就是构造一种映射函数,人工神经网络也不例外
从数学上可以证明,人工神经网络可以映射成所有的非线性函数
神经网络由大量的节点(或者我们可以称之为神经元)直接相互连接构成的
通过对节点的输入进行加权求和,这里的节点的输入不一定是网络的输入,这里的权值就是模型所需要训练的参数,最后通过一个非线性函数,实现对模型的非线性处理
常用的非线性函数:sigmoid、thanh、ReLU、softplus
人工神经网络一般分为输入层(Input layer)、隐含层(Hidden layer)、输出层(Output layer)
层与层之间相互连接,一般情况下同一层以内是不进行连接的,当然也有特殊情况比如RNN节点对自己进行反馈连接
一般的数据分析中,隐含层只有一层就够了,如果隐含层有很多层的就是深度学习网络(其参数计算过程与浅层神经网络的训练过程不太一样)
2、keras实现人工神经网络Keras Installation & Neural Network with Keras
Installation:因为Anaconda不自带,所以需要额外安装
1、打开Anaconda命令行prompt
2、输入命令conda install mingw libpython
3、输入命令pip install keras(windows下会先安装theano再安装keras)
然后使用pycharm运行程序一次报错No module named tensorflow
这里是因为如果使用theano下的keras需要指定
只要运行过keras就会在电脑有c:\user\电脑名字\keras\keras.jason
备份之后修改这个文件,修改两处,修改为"image_dim_ordering":"th"和"backend":"theano",保存关掉
再运行提示用的是Theano客户端(Using Theano backend)就成功了
'''
import numpy as np
from keras.models import Sequential#Sequential可以认为是人工神经网络各个层的容器
from keras.layers import Dense,Activation#Dense表示那些求和的层,Activation就是激活函数
from keras.optimizers import SGD#这里指的是随机梯度下降算法
def main():
from sklearn.datasets import load_iris#继续使用上一节的iris数据集
iris=load_iris()
#由于神经网络用的是分类器,所以需要把序列进行标签化
print(iris["target"])#输出的结果只有三种要么0要么1要么2
from sklearn.preprocessing import LabelBinarizer#进行标签化
print(LabelBinarizer().fit_transform(iris["target"]))
#下一步分成训练集和测试集,并进行标签化处理
train_data, test_data, train_target, test_target = train_test_split(iris.data, iris.target, test_size=0.2,random_state=1)
labels_train=LabelBinarizer().fit_transform(train_target)
labels_test = LabelBinarizer().fit_transform(test_target)
#下一步构建神经网络层
model=Sequential(
[
Dense(5,input_dim=4),#输出有5个,输入有4个,定义四个属性值
Activation("relu"),#激活函数是relu
Dense(3),#下一个输入就是上一层的输出,一共5个这里可以省略了,只定义3个它的输出,这里是012三个label
Activation("sigmoid"),#激活函数选择sigmoid
]
)
#还可以使用另一种方式定义结构,先定义一个Sequential,然后一层一层往里加也是可以的
# model=Sequential()
# model.add(Dense(5,input=4))
#下面定义一个随机梯度下降算法的优化器
sgd=SGD(lr=0.01,decay=1e-6,momentum=0.9,nesterov=True)#lr因子,decay表示远离弧长,momentum实质因子
model.compile(optimizer=sgd,loss="categorical_crossentropy")#指定优化器optimizer,隐身函数loss
model.fit(train_data,labels_train,nb_epoch=200,batch_size=40)#用训练数据进行训练,注意这里用的是labels_train
#nb_epoch表示训练多少轮,batch_size表示训练一批共多少个数据
#接下来可以预测
print(model.predict_classes(test_data))#输入测试集
#还可以用上一节讲到的混淆矩阵和准确率
#模型比较大的话,参数训练可能会消耗比较多的时间,可以把这些因子存下来,以便下次再用
model.save_weight("./data/w")#保存到指定目录
model.load_weight("./data/w")#下一次直接读取出来
if __name__=='__main__':
main()
keras:人工神经网络;
Keras是一个高级神经网络API,用Python编写,能够在TensorFlow,CNTK或Theano之上运行。它的开发重点是实现快速实验。能够以最小的延迟从想法到结果是进行良好研究的关键。
官网:https://keras.io/
#keras数据分析官网:
keras 人工神经网络官网