Jack的keras自学历程1——尝试与概览

说明

学习过程期间参考的资料有:

[keras官方文档](https://keras.io/zh/)
http://keras-cn.readthedocs.io/

自己自学keras的前提是接触了部分机器学习的算法,而后接触到了深度学习中的神经网络部分,可能本教程需要更多的知识,如果遇到不懂的知识点,请自行bing或者Google。

keras是基于Python的深度学习库,兼容2和3,底层的依赖神经网络开源库可以是tensorflow,theano和CNTK。
它与tensorflow和theano一样,是一种基于符号运算的库。
所谓符号运算,自己的理解,就是在程序开始跑之前,需要对程序进行搭建,类似于工程中的蓝图,先要定义好各种变量,建立一个计算图,计算图规定了变量之间的计算关系,当等计算图搭建好之后,才可以输入数据,才会有输出值。
官方网站的比喻是,用管道搭建供水系统,在拼水管的过程,就是在搭建图的过程。
安装keras前需要安装依赖:
numpy,scipy,pyyaml


快速上手:
快速建立深度学习的神经网络模型:
搭建序列(序贯)模型:

from keras.models import Sequential #导入keras中的Sequential包
model=Sequential()  #定义模型
from keras.layers import Dense,Activation #导入全连接层和激活函数
model.add(Dense(units=64,input_dim=100)) #构建输入层
model.add(Activation('relu'))   #使用激活函数
model.add(Dense(units=10))      #对第一层的输出调用全连接,输出10类
model.add(Activation('softmax')) #调用激活函数来对数据进行分类
#在模型搭建好后,要对模型进行编译才能调用
model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
#对模型进行编译,loss是模型训练时的损失函数,optimizer是模型使用的优化器,metrics是模型训练时的评估标准

编译完成后,要在训练的数据集上进行一定次数的迭代,为什么要多次迭代实验呢?通过按照batch进行一定次数的迭代来训练网络
model.fit(x_train,y_train,epochs=5,batch_size=32)
#这段代码中的epochs表示迭代次数,batch_size表示每一次迭代每一次输入层所抽取的数据量(不知道这样表达对不对?)
在完成模型的训练之后,需要来看我们的模型是否达到我们的要求:
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)
或者说,通过我们训练出来的偶像,对新的数据进行预测:
classes = model.predict(x_test, batch_size=128)


batch的定义自己还不是很懂,查看官方文档。多查阅两次。