使用传统全连接神经网络训练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)  # 打印损失函数和准确率的评估值
AI 代码解读
相关文章
RT-DETR改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
RT-DETR改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
114 9
RT-DETR改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
当虚拟机出现网络连接问题时,应该先检查Hyper-V的网卡连接配置
当虚拟机出现网络连接问题时,应首先检查Hyper-V的网卡配置。具体步骤包括:确认虚拟机运行状态、检查虚拟交换机类型和物理网卡连接、确保虚拟机网络适配器正确连接到虚拟交换机,并验证网络配置(IP地址等)。常见问题如虚拟交换机配置错误、网络适配器未连接或防火墙阻止连接,可通过重新配置或调整设置解决。必要时重启虚拟机和宿主机,查看事件日志或联系技术支持以进一步排查问题。
YOLOv11改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
YOLOv11改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
166 18
YOLOv11改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
RT-DETR改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进RT-DETR颈部网络
RT-DETR改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进RT-DETR颈部网络
66 12
RT-DETR改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进RT-DETR颈部网络
YOLOv11改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进v11颈部网络
YOLOv11改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进v11颈部网络
216 10
YOLOv11改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进v11颈部网络
YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
297 7
YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
DeepSeek生成对抗网络(GAN)的训练与应用
生成对抗网络(GANs)是深度学习的重要技术,能生成逼真的图像、音频和文本数据。通过生成器和判别器的对抗训练,GANs实现高质量数据生成。DeepSeek提供强大工具和API,简化GAN的训练与应用。本文介绍如何使用DeepSeek构建、训练GAN,并通过代码示例帮助掌握相关技巧,涵盖模型定义、训练过程及图像生成等环节。
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
42 1
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
这网络层就像搭积木一样,上层协议都是基于下层协议搭出来的。不管是ping(用了ICMP协议)还是tcp本质上都是基于网络层IP协议的数据包,而到了物理层,都是二进制01串,都走网卡发出去了。 如果网络环境没发生变化,目的地又一样,那按道理说他们走的网络路径应该是一样的,什么情况下会不同呢? 我们就从路由这个话题聊起吧。
106 4
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
150 8

热门文章

最新文章