使用传统全连接神经网络训练minist数据集(一)

简介: 使用传统全连接神经网络训练minist数据集(一)
"""
使用全连接神经网络训练minist数据集
"""

# 导入模块
import tensorflow as tf
from tensorflow.keras.utils import to_categorical
from tensorflow.keras import models, layers, regularizers
from tensorflow.keras.optimizers import RMSprop
from tensorflow.keras.datasets import mnist
import matplotlib.pyplot as plt
import cv2

"""
一、认识minist数据集
"""
# 加载数据集
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
# print(train_images.shape, test_images.shape)  # 打印训练集的数据和大小
# print("train_images:\n", train_images[0])  # 打印训练集第0组图像
# print("test_images:\n", test_images[0])  # 打印测试集第0组图像
# cv2.imshow('train_images[0]:', train_images[0])  # 以OpenCV中的imshow方式显示训练集第0组图像
# cv2.waitKey(0)
# cv2.destroyWindow()
# plt.imshow(train_images[0])  # 显示训练集第0组图像
# plt.show()

# 将图片由二维铺展成为一维
train_images = train_images.reshape(60000, 28 * 28).astype('float')
test_images = test_images.reshape(10000, 28 * 28).astype('float')
train_labels = to_categorical(train_labels)  # 将训练集标签转换为独热编码
test_labels = to_categorical(test_labels)  # 将测试集标签转换为独热编码
# print("train_images_shape_to_categorical:", train_labels[0])
# print("test_images_shape_to_categorical:", test_labels[0])

"""
二、搭建一个神经网络
"""
network = models.Sequential()  # Sequential表示按层顺序构建网络
# Dense表示全连接层
network.add(layers.Dense(units=128, activation='relu', input_shape=(28 * 28,),
                         kernel_regularizer=regularizers.l1(0.0001)))  # 轻微过拟合用较小的值,过度过拟合用较大的值
network.add(layers.Dropout(0.01))
network.add(layers.Dense(units=32, activation='relu',
                         kernel_regularizer=regularizers.l1(0.0001)))  # 一般都用10^-n(0.0001,0.001,0.01,0.1等)
network.add(layers.Dropout(0.01))
network.add(layers.Dense(units=10, activation='softmax'))
# print(network.summary())

"""
三、神经网络的训练

1.编译:确定优化器和损失函数等
2.训练网络:确定训练的数据、训练的轮数和每次训练的样本数等
"""
# 编译步骤
network.compile(optimizer=RMSprop(lr=0.001), loss='categorical_crossentropy', metrics=['accuracy'])
# 训练网络,用fit函数,epochs表示训练多少个回合,batch_size表示每次训练给多大的数据,
# verbose=2表示每个epoch都在控制台输出一行记录,verbose=1表示为输出进度条记录(默认为1)
network.fit(train_images, train_labels, epochs=20, batch_size=128, verbose=2)

"""
四、用训练好的模型进行预测,并在测试集上做出评价
"""
# 在测试集上测试一下模型的性能
y_pre = network.predict(test_images[:5])  # 在测试集上测试前五张图片
print(y_pre, "\n", test_labels[:5])  # 将网络中前五张测试图片和真实图片对比,看是否正确
test_loss, test_accuracy = network.evaluate(test_images, test_labels)  # 保存网络中测试集的损失和准确率的评估值
print("test_loss:", test_loss, "test_accuracy:", test_accuracy)  # 打印损失函数和准确率的评估值

​
相关文章
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
这篇文章介绍了如何使用PyTorch框架,结合CIFAR-10数据集,通过定义神经网络、损失函数和优化器,进行模型的训练和测试。
184 2
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
|
3月前
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
70 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
3月前
|
机器学习/深度学习 数据可视化 测试技术
YOLO11实战:新颖的多尺度卷积注意力(MSCA)加在网络不同位置的涨点情况 | 创新点如何在自己数据集上高效涨点,解决不涨点掉点等问题
本文探讨了创新点在自定义数据集上表现不稳定的问题,分析了不同数据集和网络位置对创新效果的影响。通过在YOLO11的不同位置引入MSCAAttention模块,展示了三种不同的改进方案及其效果。实验结果显示,改进方案在mAP50指标上分别提升了至0.788、0.792和0.775。建议多尝试不同配置,找到最适合特定数据集的解决方案。
877 0
|
17天前
|
负载均衡 网络协议 算法
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
这网络层就像搭积木一样,上层协议都是基于下层协议搭出来的。不管是ping(用了ICMP协议)还是tcp本质上都是基于网络层IP协议的数据包,而到了物理层,都是二进制01串,都走网卡发出去了。 如果网络环境没发生变化,目的地又一样,那按道理说他们走的网络路径应该是一样的,什么情况下会不同呢? 我们就从路由这个话题聊起吧。
47 4
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
|
2月前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
72 8
|
2月前
|
物联网 5G 数据中心
|
3月前
|
Docker 容器
docker swarm启动服务并连接到网络
【10月更文挑战第16天】
55 5
|
3月前
|
安全 网络架构
无线网络:连接未来的无形纽带
【10月更文挑战第13天】
84 4
|
3月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
73 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
3月前
|
机器学习/深度学习 算法 TensorFlow
深度学习笔记(五):学习率过大过小对于网络训练有何影响以及如何解决
学习率是深度学习中的关键超参数,它影响模型的训练进度和收敛性,过大或过小的学习率都会对网络训练产生负面影响,需要通过适当的设置和调整策略来优化。
603 0
深度学习笔记(五):学习率过大过小对于网络训练有何影响以及如何解决

热门文章

最新文章