Matlab这几年在人工智能这块儿也越做越好了,最近为了熟悉matlab如何搭建神经网络,自己做了一个手写体识别实验,记录一下。

实验任务非常简单,网络搭的也非常随意,不合理的地方也懒得改,旨在走通matlab搭建神经网络的流程。

首先,数据集为MNIST数据集

我已经把数据按类别分好,分为train和test,底下又都有十个子文件夹存放手写体图像。

网络训练代码如下:

clear;close all;clc;
%% 数据读取、增强%读取训练集
path_train = 'D:\work\过期文件\手写体识别\MNIST\train';  %训练集路径
folders_train = fullfile(path_train,{'0' '1' '2' '3' '4' '5' '6' '7' '8' '9'}); %读取子目录
imds_train = imageDatastore(folders_train,'FileExtensions','.jpg',...'LabelSource','foldernames');                 %读取所有图像路径
[imdsTrain,imdsValidation] = splitEachLabel(imds_train,0.9,0.1);          %拆分出验证集%读取测试集
path_test = 'D:\work\过期文件\手写体识别\MNIST\test';
folders_test = fullfile(path_test,{'0' '1' '2' '3' '4' '5' '6' '7' '8' '9'});
imds_test = imageDatastore(folders_test,'FileExtensions','.jpg',...'LabelSource','foldernames');%图像增强
pixelRange = [-2 2];   %平移范围
scaleRange = [0.9 1.1];  %缩放范围
imageAugmenter = imageDataAugmenter( ...'RandXTranslation',pixelRange, ...'RandYTranslation',pixelRange, ...'RandXScale',scaleRange, ...'RandYScale',scaleRange);     %定义图像增强器
augimdsTrain = augmentedImageDatastore([28,28],imds_train, ...'DataAugmentation',imageAugmenter);  %图像增强
%% 设计(或者读取)网络
layers = [imageInputLayer([28 28 1],"Name","imageinput")convolution2dLayer([5 5],32,"Name","conv_1","Padding","same","Stride",[2 2])reluLayer("Name","relu_1")batchNormalizationLayer("Name","batchnorm_1")convolution2dLayer([3 3],32,"Name","conv_2","Padding","same")reluLayer("Name","relu_2")fullyConnectedLayer(512,"Name","fc_1")batchNormalizationLayer("Name","batchnorm_2")reluLayer("Name","relu_3")fullyConnectedLayer(10,"Name","fc_2")softmaxLayer("Name","softmax")classificationLayer("Name","classoutput")];
% analyzeNetwork(layers)  %分析网络%% 训练网络
options = trainingOptions('sgdm', ...'MiniBatchSize',512, ...'MaxEpochs',1, ...'InitialLearnRate',1e-2, ...'Shuffle','every-epoch', ...'ValidationData',imdsValidation, ...'ValidationFrequency',3, ...'Verbose',1, ...'Plots','training-progress');   %设置训练策略
trainedNet = trainNetwork(augimdsTrain,layers,options);  %训练%% 测试模型
[YPred,probs] = classify(trainedNet,imds_test);
accuracy = mean(YPred == imds_test.Labels)

这里面,用到了一些函数,一些重要的用法我都写在其他博客里了,这儿只大致说一下有什么用

  • fullfile:读取文件夹下的所有子文件夹
  • imageDatastore:读取数据集,这个函数比较重要,后边很多函数都在调用它
  • splitEachLabel:拆分imageDatastore读取的数据
  • imageDataAugmenter:图像增强器,定义如何增强图像
  • augmentedImageDatastore:进行图像增强
  • 关于如何搭建网络,我写在了这里,看完后发现一些简单任务用不着敲一行代码
  • analyzeNetwork:分析网络
  • trainingOptions:定义训练策略,比如学习率,优化器之类的
  • trainNetwork:训练网络
  • classify:将网络用于分类

训练结果:

如果需要处理好的数据集,可以留下邮箱~

听取评论区建议,直接放上网盘,应该不会被吞贴吧2333
链接:https://pan.baidu.com/s/1htpPayQ2m0B3C5xOk3Quqg
提取码:pdb6

最后在说明一下,网络是随便搭的,不要用!!只是学习MATLAB用的

以上这些希望会对你有所帮助

Matlab深度学习实践之手写体识别(含详细注释)相关推荐

  1. 【OFDM通信】基于matlab深度学习OFDM系统信号检测【含Matlab源码 2023期】

    ⛄一.深度学习OFDM系统信号检测简介 1 OFDM系统模型 OFDM系统是一种常用的多载波调制方式, 因为其具有能够在带宽较窄的情况下传输大量数据.能够对抗频率选择性衰落.传输速率高.实现简单.信道 ...

  2. Matlab深度学习-手写体数字识别

    Matlab深度学习 文章目录 Matlab深度学习 前言 一.MNIST手写体数字数据 二.用到的深度学习框架-LeNet5 2-0 LeNet5的网络架构 2-1 框架实现-通过Matlab GU ...

  3. 基于Matlab深度学习Yolov4-tiny的交通标志识别道路标志识别检测

    交通标志检测是辅助驾驶.自动驾驶系统中的重要组成部分,针对交通标志检测任务中复杂环境下的小目标检测精度低的问题,提出一种基于YOLOv4-tiny的交通标志检测方法. 基于Matlab深度学习的道路标 ...

  4. 基于MATLAB 2021b的机器学习、深度学习实践应用

    近年来,随着无人驾驶汽车.医学影像智慧辅助诊疗.ImageNet竞赛等热点事件的发生,人工智能迎来了新一轮的发展浪潮.尤其是在计算机视觉和图像处理领域,各种颠覆性的成果应运而生. [专家]:郁磊副教授 ...

  5. MATLAB 2021b的机器学习、深度学习实践应用

    近年来,随着无人驾驶汽车.医学影像智慧辅助诊疗.ImageNet竞赛等热点事件的发生,人工智能迎来了新一轮的发展浪潮.尤其是在计算机视觉和图像处理领域,各种颠覆性的成果应运而生. 更多资讯关注:Ai科 ...

  6. 【第 07 章 基于主成分分析的人脸二维码识别MATLAB深度学习实战案例】

    基于主成分分析的人脸二维码识别MATLAB深度学习实战案例 人脸库 全套文件资料目录下载链接–>传送门 本文全文源码下载[链接–>传送门] 如下分析: 主文件 function varar ...

  7. 深度学习实践2--分类检测识别专场

    深度学习实践2–分类检测识别专场 时间:(5.12 - 5.22)线下展示 要求:按自己情况配合完成,每组至少实现一个,选题目一最好再选一个其他尝试一下,并且两个人都能简单了解过程,可自选题目(展示就 ...

  8. 基于深度学习的人脸性别识别系统(含UI界面,Python代码)

    摘要:人脸性别识别是人脸识别领域的一个热门方向,本文详细介绍基于深度学习的人脸性别识别系统,在介绍算法原理的同时,给出Python的实现代码以及PyQt的UI界面.在界面中可以选择人脸图片.视频进行检 ...

  9. 【PyTorch深度学习实践】P9 kaggle otto商品分类作业(含注释)

    <PyTorch深度学习实践>-刘二大人 Otto Group Product Classification作业 将商品进行十分类,输入为93个特征10个类别的商品数据集,输出为预测数据集 ...

  10. 基于深度学习的中文车牌识别与管理系统(含UI界面,Python代码)

    摘要:本文详细介绍基于深度学习的中文车牌识别与管理系统,在介绍算法原理的同时,给出Python的实现代码以及PyQt的UI界面.在界面中既可以选择需要识别的车牌视频.图片文件.批量图片进行检测识别,也 ...

最新文章

  1. Pthread:POSIX Threads Programming
  2. 更改matlab默认启动路径
  3. setTimeout和setInterval的区别
  4. AFN\HTTPS\UIWebView
  5. python mpi开销_GitHub - hustpython/MPIK-Means
  6. MySQL字段类型详解
  7. ActiveMQ常见操作
  8. java基础70 负责静态的网页制作语言XML(网页知识)
  9. 洛谷P2473奖励关——状压DP
  10. OpenCV-车牌号检测
  11. 电脑突然调节不了亮度?让我教你来恢复
  12. STM32串口通信UARTx
  13. Hive面试题汇总(2021)
  14. b站黑马程序员的python怎么样_如何评价传智播客旗下的黑马程序员?
  15. 雷达的工作原理示意图_雷达测距原理.ppt
  16. DVI接口关于技术性的知识导论
  17. RTX3050显卡怎么样 rtx3050显卡什么水平 rtx3050相当于gtx什么显卡
  18. 微信小游戏开发实战教程3-绘制网格
  19. java电话面试_记一次java电话面试
  20. matlab滤波器滤除低频直流信号,对低频信号的滤波的方法

热门文章

  1. java 拼音的模糊匹配 算法_c#拼音模糊匹配算法
  2. LabelImg使用方法
  3. webUploader大文件断点续传学习心得
  4. 「破解」360快压不弹广告
  5. EMNLP2020 | 模型压缩系列:BERT-of-Theseus(一种基于模块替换的模型压缩方法)
  6. Speedoffice(excel)如何根据身份证号计算年龄
  7. 安装SAS可能遇到的各种问题
  8. pcb怎么画边框_PCB设计--PCB画图技巧
  9. 游戏UI-头像框制作
  10. SecureCRT无法使用Zmodem上传下载文件