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

猜你喜欢

转载自blog.csdn.net/qq_41007606/article/details/82626702