圣辉友联北京网站建设公司,wordpress 要先装PHP吗,百度一下打开,营销型网站建设怎么做人工智能学习概述—快手视频 人工智能学习32-Keras手写体识别—快手视频 人工智能学习32-Keras手写体识别—快手视频 人工智能学习32-Keras手写体识别—快手视频 人工智能学习32-Keras手写体识别—快手视频 人工智能学习32-Keras手写体识别—快手视频
#从keras.layers 导入 …人工智能学习概述—快手视频 人工智能学习32-Keras手写体识别—快手视频 人工智能学习32-Keras手写体识别—快手视频 人工智能学习32-Keras手写体识别—快手视频 人工智能学习32-Keras手写体识别—快手视频 人工智能学习32-Keras手写体识别—快手视频
#从keras.layers 导入 2维卷积层全连接层最大池化层拉平层漏失层最大平均池
化层
from keras.layers import Conv2D, Dense, MaxPooling2D, Flatten, Dropout,
GlobalAveragePooling2D
#从keras.datasets 引入 mnist 数据集已经标注过的数据集
from keras.datasets import mnist
#引入keras顺序模型Sequential
from keras import Sequential
import keras
#引入numpy类库方便矩阵操作
import numpy as np
#引入图形类库方便图形显示
import matplotlib.pyplot as plt
#引入os操作系统类库操作本地文件和目录
import os
#避免多库依赖警告信息
os.environ[KMP_DUPLICATE_LIB_OK] True
#设置神经网络模型存储目录当前python源文件所在目录上一级下的saved_models目录
save_dir ../saved_models
#如果目录saved_models不存在新建此目录
if not os.path.isdir(save_dir):
os.makedirs(save_dir)
#神经网络模块名称
model_name numpred_keras_trained_model.h5
#设置神经网络分类数量0-9个数字需要10个分类
num_classes 10
#小批量训练时设置每次训练样品批量
batch_size 128
#网络训练次数一次前向传递和一次反馈成为一个epoch
epochs 10
#手写体图片高和宽像素数
img_rows, img_cols 28, 28
#输入手写体图片维度数高*宽*通道数28*28*1灰度图通道数为1彩色图(RGB)通道数
为3
input_shape (img_rows, img_cols, 1)
#从数据集mnist装入训练数据集和测试数据集mnist提供load_data方法
(x_train, y_train), (x_test, y_test) mnist.load_data()
#灰度图编码范围0-255将编码归一化转化为0-1之间数值
x_train x_train.astype(float32) / 255.0
x_test x_test.astype(float32) / 255.0
#将训练数据集和测试数据集转化为张量(batch,height,width,channel)
x_train x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)
x_test x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)
#将训练和测试标注数据转化为张量(batch,num_classes)
y_train keras.utils.to_categorical(y_train, num_classes)
y_test keras.utils.to_categorical(y_test, num_classes)
#定义Keras顺序模型Sequential
model Sequential()
#添加二维卷积层通道为32核函数3*3,激活函数Relu输入张量(28,28,1)
model.add(Conv2D(filters32,
kernel_size(3,
input_shapeinput_shape))
#添加二维卷积层,通道为64核函数3*3激活函数Relu
3),
activationrelu,
model.add(Conv2D(filters64, kernel_size(3, 3), activationrelu))
#添加最大池化核大小(2*2)
model.add(MaxPooling2D(pool_size(2, 2)))
#添加Dropout漏失层漏失比例20%
model.add(Dropout(rate0.2))
#添加拉平层将张量拉平为一维向量
model.add(Flatten())
#添加Dropout漏失层漏失比例50%
model.add(Dropout(rate0.5))
#添加全连接层输出尺寸128维向量激活函数为Relu
model.add(Dense(units128, activationrelu))
#添加输出层输出尺寸10维向量激活函数为Softmax将输入图片映射为0-9个数字
model.add(Dense(num_classes, activationsoftmax))
#编译模型损失函数采用交叉熵,优化器采用Adadelta,获取统计数据为准确率
model.compile(losskeras.losses.categorical_crossentropy,
optimizerkeras.optimizers.Adadelta(), metrics[acc])
#显示网络层次结构
model.summary()
#训练模型
#x_train 为训练数据集y_train为训练数据集标注结果
#batch_size 为小批量训练每次训练样品数epochs为训练次数
#verbose1 为输出训练过程信息
# validation_data(x_test,y_test)是测试数据集目录为衡量模型预测准确率
model.fit(x_train, y_train,
batch_sizebatch_size,
epochsepochs,
verbose1,
validation_data(x_test, y_test)
)
#神经网络模型保持目录
model_path os.path.join(save_dir, model_name)
#保存训练后的神经网络模型
model.save(model_path)
print(Model save at file %s % model_path)
#测试神经网络模型预测效果
n 10 #取出测试数据集中前10个样本
#使用训练好的模型预测结果
pred model.predict(x_test[:n], n)
#定义图形界面分为3行10列显示图片
plt.figure(figsize(10, 3))
#循环显示每幅图片标注真实值和网络预测值
for i in range(n):
#定义图片输出位置
plt.subplot(1, 10, i1)
plt.subplots_adjust(wspace2)
#格式化图片格式
t x_test[i].reshape(28, 28)
#显示图片
plt.imshow(t, cmapgray)
if pred[i].argmax() y_test[i].argmax():
#预测正确时使用绿色显示真实值和预测值
plt.title(%d,%d
%
colorgreen)
else:
(pred[i].argmax(),
#预测错误时使用红色显示真实值和预测值
y_test[i].argmax()),
plt.title(%d,%d % (pred[i].argmax(), y_test[i].argmax()), colorred)
plt.xticks([])
plt.yticks([])
#显示图片窗口
plt.show() 自定义手写体网络模型