卷积神经网络(AlexNet)识别Fashion-MNIST数据集(Pytorch版)

使用PYTORCH复现ALEXNET实现MNIST手写数字识别 网络介绍: Alexnet网络是CV领域最经典的网络结构之一了,在2012年横空出世,并在当年夺下了不少比赛的冠军,下面是Alexnet的网络结构: 网络结构较为简单,共有五个卷积层和三个全连接层,原文作者在训练时使用了多卡一起训练,具体细节可以阅读原文得到。 Alexnet文章链接:http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf 作者在网络中使用了Relu激活函数和Dropout等方法来防止过拟合,更多细节看文章。 数据集介绍 使用的是MNIST手 阅读详情

1. 前言

1.1 案例介绍

本案例使用Pytorch搭建一个稍微简化的AlexNet网络结构,用于Fashion-MNIST数据集的图像分类。针对该问题的分析可以分为数据准备、模型建立以及使用训练集进行训练和使用测试集测试模型的效果。

1.2 环境配置

⑴ 操作系统: Windows10
⑵ 编译器环境: PyCharm Community Edition 2021.2
⑶ 配置环境: Pytorch1.7.1 + torchvision8.2 + CUDA11.3

1.3 模块导入

本案例需要导入如下的库文件和相关模块:

import numpy as np
import pandas as pd
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
import matplotlib.pyplot as plt
import seaborn as sns
import copy
import time
import torch
import torch.nn as nn
from torch.optim import Adam
import torch.utils.data as Data
from torchvision import transforms
from torchvision.datasets import FashionMNIST

2. 图像数据准备

在模型建立与训练之前,首先准备FashionMNIST数据集,该数据集可以直接使用torchvision库中datasets模块的FashionMNIST()函数读取,如果指定的工作文件夹中没有当前数据,可以从网络上自动下载该数据。

2.1 训练验证集的准备

训练验证集的加载处理程序被包装成如下的train_data_process()函数 ,它的作用是导入训练数据集,然后使用Data.DataLoader()函数将其定义为数据加载器,每个batch中会包含64个样本,通过len()函数可以计算数据加载器中包含的batch数量,输出显示train_loader中包含938个batch。需要注意的是参数shuffle = False,表示加载器中每个batch使用的样本都是固定的,这样有利于在训练模型时根据迭代的次数将其分为训练集和验证集。同时为了观察数据集中每个图像的内容,可以获取一个batch的图像,然后将其可视化,以观察数据。

# 处理训练集数据
def train_data_process():
    # 加载FashionMNIST数据集
    train_data = FashionMNIST(root="./data/FashionMNIST",  # 数据路径
                              train=True,  # 只使用训练数据集
                              transform=transforms.Compose([transforms.Resize(size=224), transforms.ToTensor()]),  # AlexNet的输入数据大小为224*224,因此这里将FashionMNIST数据集的尺寸从28扩展到224
                                                                                                                   # 把PIL.Image或者numpy.array数据类型转变为torch.FloatTensor类型
                              download=False,  # 若本身没有下载相应的数据集,则选择True
                              )
    train_loader = Data.DataLoader(dataset=train_data,  # 传入的数据集
                                   batch_size=64,  # 每个Batch中含有的样本数量
                                   shuffle=True,  # 不对数据集重新排序
                                   num_workers=0,  # 加载数据所开启的进程数量
                                   )
    print("The number of batch in train_loader:", len(train_loader))  # 一共有938个batch,每个batch含有64个训练样本

    # 获得一个Batch的数据
    for step, (b_x, b_y) in enumerate(train_loader):
        if step > 0:
            break
    batch_x = b_x.squeeze().numpy()  # 将四维张量移除第1维,并转换成Numpy数组
    batch_y = b_y.numpy()  # 将张量转换成Numpy数组
    class_label = train_data.classes  # 训练集的标签
    class_label[0] = "T-shirt"
    print("The size of batch in train data:", batch_x.shape)  # 每个mini-batch的维度是64*224*224
    
    # 可视化一个Batch的图像
    plt.figure(figsize=(12, 5))
    for ii in np.arange(len(batch_y)):
        plt.subplot(4, 16, ii+1)
        plt.imshow(batch_x[ii, :, :], cmap=plt.cm.g
深度学习新手入门:从零搭建PyTorch环境到MNIST手写数字识别实战 深度学习作为人工智能的核心技术,通过模拟人脑神经网络结构,赋予计算机从数据中自动学习特征和规律的能力。其核心原理在于利用多层非线性变换构建复杂函数映射,通过反向传播算法优化模型参数,以最小化预测误差。这项技术的价值在于能够处理高维、非结构化的海量数据,在图像识别、自然语言处理等领域实现了突破性进展。对于初学者而言,快速上手的关键在于理解标准项目流程并完成一个可运行的实战案例。本文聚焦于深度学习入门中最经典的MNIST手写数字识别项目,详细演示了如何使用PyTorch框架,从环境搭建、数据预处理到卷积神经网络 阅读详情

相关推荐

CNN图像识别实战:从卷积层到LeNet-5的PyTorch实现

图像识别是人工智能落地的重要场景,其核心挑战在于如何让模型高效地从原始像素中提取空间特征。卷积神经网络(CNN)通过局部连接与权值共享机制,仅用少量参数即可捕捉边缘、纹理等层次化特征,成为解决该问题的经典架构。在CNN中,卷积层负责特征提取,池化层压缩信息,激活函数引入非线性,全连接层完成最终分类,四者协同构成完整的特征处理流水线。以LeNet-5和AlexNet为代表的经典网络,分别奠定了现代CNN的结构基础并开启深度学习时代。本文从工程实践角度,结合PyTorch框架,完整演示了基于MNIST数据集的手

weixin_34087307的博客 366

卷积神经网络总结

CNN 的核心逻辑:用卷积提特征,用池化减开销,用全连接做决策。适合场景:图像分类、目标检测、图像分割等(所有网格结构数据)。关键技巧:卷积核越小(如 3×3)、层数越深,特征提取越精细;合理用填充和步幅控制特征图大小。

爱喝可乐的老王的博客 634

图像分类入门实战:从图像处理到卷积神经网络全流程解析

计算机视觉是让机器从像素中提取规律的技术,而图像分类则是其最基础的任务之一。要完成分类,需先理解图像在计算机中的存储方式,并通过灰度化、缩放、归一化等图像处理手段将数据标准化。随后,神经网络(尤其是卷积神经网络)通过卷积、池化、全连接层自动学习局部特征,成为解决图像分类的核心工具。本文以 MNIST 数据集为例,手把手带你用 PyTorch 实现 LeNet-5 与 AlexNet 两个经典模型,涵盖从环境搭建、数据预处理到训练调优的完整流程,并分享学习率、过拟合、数据增强等实用技巧。无论你是零基础新手还是

weixin_30567225的博客 349

深度学习入门:3天掌握CNN、RNN、Transformer、GAN核心架构与应用

深度学习作为机器学习的重要分支,其核心在于通过神经网络模型自动从数据中学习特征表示。其基本原理是通过构建具有多层非线性变换的模型,来逼近复杂的输入输出映射关系。这一技术的核心价值在于能够处理图像、文本、序列等非结构化数据,在计算机视觉、自然语言处理等领域展现出强大能力。应用场景广泛,从图像分类、目标检测到机器翻译、内容生成,都依赖于对不同数据结构的有效建模。本文聚焦于**卷积神经网络(CNN)** 和**生成对抗网络(GAN)** 等核心架构,深入剖析其设计思想与解决特定数据模式(如空间局部性、数据分布学习

weixin_33860528的博客 408

计算机视觉实验全流程指南:从PyTorch模型构建到调优实战

计算机视觉作为人工智能的核心分支,其核心原理在于让机器通过算法理解并处理图像信息。深度学习技术,特别是卷积神经网络,通过模拟生物视觉机制,实现了从图像中自动提取特征并进行分类、检测等任务。这项技术的价值在于将理论模型转化为解决实际问题的工程系统,广泛应用于人脸识别、自动驾驶、智能医疗等领域。本文聚焦于计算机视觉实验的工程实践,详细解析了使用PyTorch框架进行模型构建、训练与调优的全流程。内容涵盖数据预处理、模型选择、损失函数与优化器配置等关键环节,并深入探讨了迁移学习、数据增强等提升模型性能的实用技巧。

425

ROCm上运行深度卷积神经网络(AlexNet)

如果你要在支持ROCm的AMD GPU上运行深度学习模型(例如AlexNet),你需要确保ROCm已经安装在你的系统中,并且PyTorch与ROCm兼容。它使用PyTorch框架中的API来实现,并且模仿了AlexNet的一般结构,这是一个著名的网络结构,常用于图像识别任务。然而,确保环境设置正确是至关重要的。3. 查看各层输出:通过遍历网络的每一层,输入一个随机生成的数据`X`(尺寸为1x1x224x224,代表一批大小为1的224x224像素的单通道图像),并打印各层的输出形状。

数字人生 931

Pytorch快速入门系列---(七)卷积神经网络与Pytorch实践(一)

卷积神经网络是一种以图像识别为中心,并且在多个领域得到广泛应用的深度学习方法,如目标检测、图像分割、文本分类等。

qq_42681787的博客 1221

FashionMNIST-data 数据集 深度学习

Fashion-MNIST是一个替代MNIST手写数字集的图像数据集。 其涵盖了来自10种类别的共7万个不同商品的正面图片。Fashion-MNIST的大小、格式和训练集/测试集划分与原始的MNIST完全一致。60000/10000的训练测试数据划分,28x28的灰度图片。你可以直接用它来测试你的机器学习和深度学习算法性能。

彻底禁用有道云笔记自动更新:手动修改配置文件的终极方案

本文详细介绍了如何通过修改配置文件彻底禁用有道云笔记的自动更新功能,解决v7.2.8版本的兼容性问题。通过定位并修改`app-update.yml`文件,用户可以一劳永逸地阻止强制更新,保持稳定的v7.2.7版本。文章还提供了常见问题排查和进阶防护措施,确保操作的有效性和安全性。

weixin_29258297的博客 457

Windows环境下Elasticsearch与JDK版本兼容性实战指南

本文详细解析了Windows环境下Elasticsearch与JDK版本的兼容性问题,提供了从版本匹配检查到安装部署的完整实战指南。重点介绍了Elasticsearch 8.x需JDK 17+等关键版本对应关系,并分享多版本JDK共存方案及性能优化技巧,帮助开发者高效避坑。

weixin_29250403的博客 416

Camera AF和FF

Camera按对焦功能可以分为FF(Fixed Focus)和AF(Auto Focus),即固定对焦和自动对焦。固定对焦顾名思义就是焦距是固定的,而自动对焦可以通过移动镜头位置来改变焦距从而实现自动对焦。以前摄像的功能机大多是固定对焦,现在的手机都带有自动对焦功能。 FF模组包括镜头(Lens),传感器(Sensor),红外滤色器(IR Filter),电路板(PCB),镜头支撑(Lens Holder),连接器(Connector)。 Fig 1. FF Module AF模组包括FF模组,音圈马达(V

Coppa的博客 1万+

【主力资金密码】副图指标升级版使用技术图文案例分解,通达信软件炒股指标公式代码

(1)主力资金线在低位时,对应的副图指标显示柱线是绿色,这个阶段主力资金参与小,行情处于下跌趋势或弱势震荡。当然,如果结合主图指标【翻倍密码系统】操作,主图的两个买卖点以及K线均线变色跟踪功能,更多的技术支撑,多空更加清晰,共振做多或多头更加确定和安全。如上图标记,中档虚线是参考安全操作的一个区间划分,粉色阶段做多或持股为主,为操作增加一道安全保护。如上图,副图指标【主力资金密码】更新叠加操作区间背景,绿色阶段持币或做空,粉色阶段做多或持股。如上图,副图指标,标记的两个区间,绿色区间时做空或持币。

weixin_69760830的博客 2527

AUTOSAR进阶图解==>AUTOSAR_SWS_ECUStateManager

AUTOSAR ECU State Manager 摘要 AUTOSAR ECU状态管理器(EcuM)是Classic Platform 4.4.0规范中的核心模块,负责管理ECU的整个生命周期,包括启动、运行、关机和睡眠等状态转换。EcuM通过协调各基础软件模块的初始化过程,确保系统可靠运行。 主要功能包括: 启动管理 - 控制从硬件初始化到应用运行的完整启动序列 状态转换 - 管理RUN/POST_RUN/SHUTDOWN等状态切换 唤醒验证 - 区分真实与虚假唤醒事件 关机序列 - 确保安全关机保存关

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 2460

【2026最新版】PCL点云处理算法汇总(C++长期更新版)

PCL学习目录。博客长期更新,最近一次更新时间为:2026年10月4日。

点云侠的博客 63万+

RAG面试内容整理-8. 文档分块策略(滑动窗口、语义切分)

RAG系统通常面对长文档或整篇知识库资料的检索需求,但大模型一次处理的文本长度有限,向量索引也需固定大小的文本片段。因此,将长文档拆分成合适片段是必不可少的步骤,被称为文档分块(chunking)策略。

不务正业的猿 677

arkts编译报错-arkts-limited-stdlib错误【Bug已完美解决-鸿蒙开发】

在使用 Deveco Studio 4.0 beta2 开发应用时,报错。ERROR: ArkTS:ERROR File: D:/prRevivw/3792/applications_appsamgCSDNo”见台难忘Usage of standardlibrary is restricted (arkts-limited-stdlib)这是 ArkTS 新增的语法规则。

一键难忘的博客 3770

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

上一篇: 卷积神经网络(LeNet)识别Fashion-MNIST数据集(Pytorch版)
下一篇: 卷积神经网络(VGG-11)识别Fashion-MNIST数据集(Pytorch版)
奔跑的chanchanchan
博客等级 码龄11年 432粉丝 44原创
评论 18
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值