keras基本用法

keras基本用法

keras是目前使用最为广泛的深度学习工具之一。这里就不在做过多介绍,下面我们来看一下keras的基本用法吧。
这里使用keras搭建一个最简单的LeNet-5进行手写体数字识别的介绍。
首先,如果还没有安装keras的朋友可以通过以下命令进行安装。

pip install keras

接下里看具体实现,直接上代码,讲解都写在注释中了。

import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Flatten, Conv2D, MaxPooling2D
from keras import backend as K
from keras.callbacks import ModelCheckpoint

'''类别'''
num_classes = 10
'''输入图片的行数'''
rows = 28
'''输入图片的列数'''
cols = 28

'''通过keras封装好的API加载MNIST数据集
其中,trainX是一个60000x28x28的数组,trainY是每一张图片对应的数字'''
(trainX, trainY), (testX, testY) = mnist.load_data()

'''设置输入层的格式,最后的1表示图像时黑白图像,彩色图像最后一个参数为3'''
trainX = trainX.reshape(trainX.shape[0], rows, cols, 1)
testX = testX.reshape(testX.shape[0], rows, cols, 1)
'''输入的形状,行数、列数、通道数'''
input_shape = (rows, cols, 1)

'''将图像像素转化为0到1之间的实数,即归一化像素值'''
trainX = trainX.astype('float32')
testX = testX.astype('float32')
trainX /= 255.0
testX /= 255.0

'''将输出转化为需要的格式,这里使用one-hot编码'''
trainY = keras.utils.to_categorical(trainY, num_classes)
testY = keras.utils.to_categorical(testY, num_classes)

'''使用keras API定义模型,首先,定义一个Sequential类'''
model = Sequential()

'''定义一个深度为32,滤波器尺寸为5x5的卷积层,激活函数层使用relu函数'''
model.add(Conv2D(32, (5,5), activation='relu', input_shape=input_shape))

'''定义一个滤波器尺寸为2x2的最大池化层'''
model.add(MaxPooling2D(pool_size=(2,2)))

'''定义一个深度为64,滤波器尺寸为5x5的卷积层,激活函数层采用relu函数'''
model.add(Conv2D(64, (5,5), activation='relu'))

'''定义一个滤波器尺寸为2x2的最大池化层'''
model.add(MaxPooling2D(pool_size=(2,2)))

'''将卷积层的输出拉直作为后面全连接层的输入'''
model.add(Flatten())

'''定义全连接层,有500个节点,激活函数采用relu'''
model.add(Dense(500, activation='relu'))

'''输出层,即分类层,也是一个全连接层,采用softmax函数作为分类器'''
model.add(Dense(num_classes, activation='softmax'))

'''定义损失函数,优化器,评测方法。这里使用交叉熵损失,随机梯度下降优化器,精确度评测方法'''
model.compile(loss=keras.losses.categorical_crossentropy, optimizer=keras.optimizers.SGD(), metrics=['accuracy'])

'''保存在测试集上表现最优的模型'''
filepath="weights.best.hdf5"  #模型保存路径
checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1, save_best_only=True, mode='max')
callbacks_list = [checkpoint]

'''设置训练数据,batch大小、训练步数、测试数据,自动开始训练'''
model.fit(trainX, trainY, batch_size=128, epochs=20, validation_data=(testX, testY))

'''在测试集上计算准确度'''
score = model.evaluate(testX, testY)

print('Test loss;',score[0])
print('Test accuracy:',score[1])

如果觉得博主的文章对您有所帮助,记得关注一下呦!您的支持就是我不断更新下去的最强动力。

如有不对的地方请指正,谢谢
有需要深度学习及机器视觉相关开发环境的可加博主QQ获取,有问题请联系下方QQ直接与博主本人交流。博主会定期更新视觉相关算法使用及实际项目讲解,谢谢各位
博主QQ:2021907249

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nice七仔爱地球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值