IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> mnist数据集手写数据识别实战 -> 正文阅读

[人工智能]mnist数据集手写数据识别实战

mnist数据集为keras库中自带数据集,可直接导入数据,本文使用pycharm作为主要工具

?1、导入相应库文件(主要使用keras库)

from keras.datasets import mnist #导入数据集
from keras import regularizers #layers表示层,regularizers表示正则化
from keras.models import Sequential#神经网络模型库
from keras.utils import np_utils#数据处理库
from keras.layers import Dense,Dropout
import matplotlib.pyplot as plt

2、探索数据基本参数,输出数据大小,并打印第一个图像像素数据,每个图像大小均为长28*宽28

(train_images,train_labels),(test_images,test_labels) = mnist.load_data() #下载数据集 第二次运行不用重新下载
print(train_images.shape,test_images.shape) #打印训练和测试图像的大小信息
print(train_images[0])  #打印图像的像素信息
print(train_labels[0])  #打印图像对应的标签

?3、直观的查看图像

plt.imshow(train_images[0])  #查看图像
plt.show()

4、训练前数据处理

train_images = train_images.reshape(60000,28*28).astype("float") #reshape函数表示将二维数值转化成一维数值
test_images = test_images.reshape(10000,28*28).astype("float")
train_labels = np_utils.to_categorical(train_labels)#进行onehot编码,便于进行分类
test_labels = np_utils.to_categorical(test_labels)

?5、神经网络构建(使用Dense表示全连接层)

model = Sequential()#将所有层连接
#
# 方法一:只有一个隐藏层,测试学习率不理想
model.add(Dense(15, activation='relu',input_shape=(28*28,))) #隐藏层15个神经元,使用relu激活函数,
model.add(Dense(10, activation='softmax'))#输出层10个神经元,激活函数使用softmax,二分类问题使用Sigmund

6、网络参数选择及训练(每次训练其准确率不同,选择最高)

model.compile(optimizer='rmsprop',#梯度下降算法
      loss='categorical_crossentropy',#损失函数会不断下降,交叉熵函数
      metrics=['accuracy'])#准确率会不断上升
model.fit(train_images,train_labels,epochs = 20,batch_size = 128,verbose = 2)#训练20轮,每次训练128个数据,
y_pre= model.predict(test_images)#导入测试集进行训练进行验证

?7、查看搭建神经网络

print(model.summary())#对搭建是神经网络进行可视化显示

?

8、 测试集训练

y_pre= model.predict(test_images)#导入测试集进行训练进行验证

9、测试集评价

test_loss,test_accuracy = model.evaluate(test_images,test_labels)#使用evaluate评价函数对测试集的损失函数和准确率进行测试
print("test_loss:",test_loss,"test_accuraccy:",test_accuracy)

?注:使用单层神经网络时,训练集准确率和测试集准确率存在较大差距,这一现象叫过拟合,解决方法是使用正则化,同时Dropout函数随机消除神经元,能够有效解决过拟合现象

10、使用正则化及Dropout对模型进行优化(每次运行时其结果均不同,选择最佳准确率及最佳拟合)

#方法二:优化模型,增加隐藏层,提高学习率
model.add(Dense(128,activation="relu",input_shape=(28*28,)))#出现过拟合问题,使用kernel_constraint进行正则化,降低过拟合程度
model.add(Dense(32,activation="relu"))
regularizers.l1(0.0001)
model.add(Dropout(0.01))#以多少概率让神经元消失功能
model.add(Dense(10,activation="softmax"))

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-20 15:47:40  更:2021-09-20 15:49:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/22 7:34:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码