【Keras】Keras学习框架

大部分深度学习都是以符号主义的方式使用。符号主义是说在建立模型任务的时候,首先定义各种变量,建立一个整体的计算图。计算图规定了各个变量之间的计算关系。建立好的计算图需要编译已确定其内部细节,但是此时的计算图还是一个空壳,里面没有任何数据,只需要你把需要的运算的数据转化为模型匹配的格式,才能在整个模型中形成数据流,从而形成输出值。

准备数据,MNIST。对于MNIST来说,可以是图片识别领域的”hello world“,每个样本数据是一张28*28像素的灰度手写数字图片,每张图片对应一个数字,训练库共有60000张手写的数字图像,测试库共有10000张数字图像,图片分类为0-9共10类。

1、加载MNIST数据

#由于不能链接到官方的已经处理好的数据,所以这里通过tensorflow导入mnist数据
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
#from _future_ import print_function
import numpy as np
#from keras.dataseets import mnist
from keras.models import Sequential
from keras.layers import Dense
from keras.utils import np_utils

batch_size = 128 #梯度下降一个批(batch)的数据量
nb_classes =10 #类别
nb_epoch =10 #梯度下降epoch循环训练次数,每次循环包含全部的样本
image_size = 28*28 #输入图片的大小,由于是灰度图片,因此只有一个颜色通道

#加载数据
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
x_train,y_train= mnist.train.images, mnist.train.labels
#print(x_train.shape,y_train.shape) #(55000, 784) (55000, 10)
x_test,y_test= mnist.test.images, mnist.test.labels
#print(x_test.shape,y_test.shape) #(10000, 784) (10000, 10)
#如果y_train\y_test不是one_hot编码,需要进行转换
'''
#例如将[2,3,...]编码成[[0,0,1,,,],[0,0,0,1,,,]]
#导入编码模块
from keras.utils import np_utils
y_train  = np_utils.to_categorical(y_train,nb_classes)
y_test = np_utils.to_categorical(y_test,nb_classes)
'''

2、模型的创建
之所以能使用深度学习完成逻辑分类,是因为和一层全链接的神经网络其实是等价的。在keras中,模型的容器抽象分类为两种:Model和Sequential。Model和tensorflow风格相似,Sequential与Theano和Caffe相似。下面使用Sequential模型容器。

#创建模型,逻辑分类相当于一层全链接的神经网络(Dense是Keras中定义的DNN模型)
model = Sequential([Dense(10,input_shape=(image_size,),activation= 'softmax')])

3、模型编译
编译的选项参数中,“优化器”是指训练模型时使用哪种方式优化模型参数,这些优化算法基本上都是各种变种的梯度下降算法,这里选择SGD(随机梯度下降)。“loss”是指选择那种损失函数,这里选择多类别交叉熵。

model.compile(optimizer = 'rmsprop',loss = 'categorical_crossentropy',metrics= ['accuracy'])

4、训练模型
模型的训练函数:fit函数通过sample_per_epoch 和 nb_epoch 两个参数来确定什么时候训练终止,这两个参数指定了每个epoch包含多少个样本以及要训练多少个epoch。

model.fit(x_train,y_train,batch_size = batch_size,nb_epoch = nb_epoch,verbose = 1,validation_data = (x_test,y_test))

5、评估模型的成绩

#score分数包含两部分,一部分是val_loss,一部分是val_acc。取score[1]来进行模型的得分评价
score = model.evaluate(x_test,y_test,verbose = 0)
print('Accuracy:{}'.format(score[1]))

6、Keras小结
Keras的使用整体步骤分为以下几步
a>准备train_test数据
b>定义模型
c>compile编译模型
d>给模型输入数据
e>模型得分评价

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值