卷积神经网络中的图像特征——以YOLOv5为例进行可视化

yolov5 Grad-CAM可视化,以及对可视化过程的分析 实验记录 阅读详情
AI摘要

文章介绍了图像处理中的特征层次,包括低层特征如边缘、颜色和纹理,以及高层特征涉及的语义信息。重点讨论了特征融合,特别是FPN(特征金字塔网络)在多尺度特征融合中的作用,用于提高物体检测性能。以YOLOv5网络为例,展示了特征从原始图像到高层语义的演化过程。

一、图像特征

1. 图像低层特征
  • 图像低层特征指的是:边缘、颜色和纹理等特征。
  • 低层特征的分辨率较高,包含较多的位置、细节信息,但其包含的语义信息较少,噪声较多。
  • 原始图像和浅层卷积网络输出的特征图属于低层特征,从低层特征图中可以看清轮廓、边缘等信息。
2. 图像高层特征
  • 图像的高层语义特征是指人所能理解的东西,比如沙发、狗、瓶子等。
  • 高层特征包含较多的语义信息,但其分辨率较低,对位置和细节的感知能力也较差。
  • 经过深层的卷积网络,可以有效归纳出语义信息,就是类似某个区域就是什么东西,并不需要显示具体的纹理信息。
3. 示例
  • 下面以YOLOv5网络为例,可视化展示了原始图像经过每一层网络后的输出特征图(共23层,逐层可视化),YOLOv5的网络结构如下:在这里插入图片描述
  • 原始输入图像
    在这里插入图片描述
    - Conv输出的的特征图(第0层的输出)
    在这里插入图片描述
    - Conv输出的特征图(第1层的输出)
    在这里插入图片描述
    - C3输出的特征图(第2层的输出)
    在这里插入图片描述
    - Conv输出的特征图(第3层的输出)
    在这里插入图片描述
    - C3后的特征图(第4层的输出)
    在这里插入图片描述
    - Conv输出的特征图(第5层的输出)
    在这里插入图片描述
    - C3输出的特征图(第6层的输出)
    在这里插入图片描述
    - Conv输出的特征图(第7层的输出)
    在这里插入图片描述
    - C3输出的特征图(第8层的输出)
    在这里插入图片描述
    - SPPF输出的特征图(第9层的输出)
    在这里插入图片描述
    - Conv输出的特征图(第10层的输出)
    在这里插入图片描述
    - Upsample输出的特征图(第11层的输出)
    在这里插入图片描述
    - Concat输出的特征图(第12层的输出)
    在这里插入图片描述
    - C3输出的特征图(第13层的输出)
    在这里插入图片描述
    - Conv输出的特征图(第14层的输出)
    在这里插入图片描述
    - Upsample输出的特征图(第15层的输出)
    在这里插入图片描述
    - Concat输出的特征图(第16层的输出)
    在这里插入图片描述
    - C3输出的特征图(第17层的输出)
    在这里插入图片描述
    - Conv输出的特征图(第18层的输出)
    在这里插入图片描述
    - Concat输出的特征图(第19层的输出)
    在这里插入图片描述
    - C3输出的特征图(第20层的输出)
    在这里插入图片描述
    - Conv输出的特征图(第21层的输出)
    在这里插入图片描述
    - Concat输出的特征图(第22层的输出)
    在这里插入图片描述
    - C3输出的特征图(第23层的输出)
    在这里插入图片描述

二、特征融合

1. 多尺度特征融合
  • 低层网络的感受野比较小,几何信息表征能力强,虽然分辨率高,但是语义信息表征能力弱。
  • 高层网络的感受野比较大,可以理解为CNN从更加全局的角度对图像做特征提取,因此产生更加高层次的语义信息,语义信息表征能力强,但是特征图的分辨率低,几何信息的表征能力弱(空间几何特征细节缺乏)。
  • 将低层网络的几何信息与高层网络的语义信息相融合,是提高检测和分割性能的重要手段。
2. FPN
  • FPN(特征图金字塔网络),主要解决的是物体检测中的多尺度问题,通过简单的网络连接改变,在基本不增加原有模型计算量的情况下,大幅度提升了小物体检测的性能。

  • 算法大致结构如下:一个自底向上的线路,一个自顶向下的线路,横向连接。
    在这里插入图片描述

  • 自底向上:
    自底向上的过程就是神经网络的前向传播过程,特征图经过卷积核计算,尺寸会越变越小。

  • 自上而下:
    自上而下的过程是把更抽象、语义更强的高层特征图进行上采样。

  • 横向连接:
    横向连接则是将上采样的结果和自底向上生成的相同大小的特征图进行融合,横向连接的两层特征在空间尺寸相同,这样做可以利用低层定位细节信息。

参考文章

关于encoder-decoder网络 - 特征融合

深度特征融合—高低层(多尺度)特征融合

对图像中语义信息、高层和底层特征的理解

CNN中的底层、高层特征、上下文信息、多尺度

多尺度特征融合

FPN(特征金字塔)结构笔记

【yolo特征可视化原理】 yolo系列集成的特征可视化方法是通过原图片张量每经过一个模块计算后就输出该特征张量对应的特征图,该图片包含多张特征子图,这些子图是按不同的通道来进行展示的,默认一张图片最多展示32张,即32个不同的通道对应的特征图。 阅读详情

相关推荐

yolov5特征图可视化

今天想做特征图可视化,看到csdn上已经有大佬做了,大家可以去参考一下 传送门:yolov5特征图可视化_Silence_Zzz的博客-优快云博客_yolov5特征图可视化 我在做的过程中发现了源代码里有可视化的代码,上面那篇博客上没有可能是作者还没更新仓库 我们要进行特征图可视化操作,只需要在yolo.py里找到这个函数 然后detect你要检测的图片 如果要可视化指定模块的特征图,只需要把代码改成 效果如下: 以上 ...

shenhaibb_的博客 4383

YOLOV5学习笔记(八)——可视化任意特征层

神经网络是一个黑盒子的概念,能够让特征层可视化,对网络的更改有很大的作用。

HUASHUDEYANJING的博客 5608

计算机视觉入门实战:从图像识别到目标检测与分割的PyTorch完整指南

如果你刚接触计算机视觉,可能会被一堆术语搞晕:目标检测、图像分割、图像识别……它们到底有什么区别?我应该先学哪个?网上教程要么太理论,要么代码跑不通,要么只讲一个点,学完还是不知道如何串联起来解决实际问题。 这篇文章要解决的就是这个痛点。我不会只告诉你“CNN是卷积神经网络”,而是会用一个完整的项目流程,带你从零理解深度学习如何让计算机“看懂”世界。更重要的是,我会把目标检测、图像分割、图像识别这三大主流方向的核心原理、应用场景和代码实战串起来讲清楚。你会发现,它们不是孤立的技术,而是解决不同层次视觉问题的

weixin_28678151的博客 261

【yolov5】改进系列——特征图可视化

六行代码实现:特征图提取与特征图可视化,可以实现分类网络的特征图可视化最近忙论文,想在yolov5上面做一些改进,看源码看了一段时间,动手改改代码做一些改进,所以做个一系列改进的记录。六行代码实现:特征图提取与特征图可视化,可以实现分类网络得特征图可视化。

capsule的博客 9582

[Pytorch]图像在卷积神经网络里都经历了什么?卷积神经网络特征图可视化(以yolov3为例)

文章目录前言一、Yolov31.Darknet53二、特征图像可视化1.可视化函数2.特征可视化总结 前言 图像卷积神经网络(Convolution Neural Network ,CNN)是通过Kernel对图像Tensor进行卷积(废话 )从而提取出高维向量,对图像进行分类,目标识别,语义分割。写网络的过程中,不由得好奇每个层中图像被提取出了什么特征,所以简单编写了一个以Yolov3为例的特征层可视化函数。 一、Yolov3 Yolov3是一个目标识别卷积神经网络,该网络均由Convolutiona

electric_sheep的博客 5513

目标检测YOLO实战应用案例100讲-基于遥感图像目标检测的输电走廊风险点及可视化研究(续)

本文篇幅较长,分为上下两篇,上篇详见。

qq_36130719的博客 717

Yolov5中使用EigenCAM实现特征图可视乎

是的,我了解EigenCAM,它是一种用于使卷积神经网络(CNN)模型更具解释性的方法。EigenCAM的主要思想是:通过层析分解的方法找出输入图像在CNN中间层特征图中激活程度最高的区域。将中间层特征图中每个特征通道的激活作为输入图像不同区域的重要性权重。权重映射回输入图像,就可以高亮显示对CNN分类决策影响最大的图像区域。相比普通的类别激活映射(CAM),EigenCAM具有以下优点:可以用于任意的CNN模型,无需修改模型结构。计算效率高,可以快速生成类激活映射。

qq_36070656的博客 4076

蘑菇图像分类数据集实战:8类12000张图的yolov5与CNN训练避坑指南

图像分类是计算机视觉的基础任务,其核心在于通过卷积神经网络提取特征并映射到类别空间。在农业与生物识别场景中,蘑菇识别常面临数据集类别不均衡、图像重复及标签错位等问题。一个包含8类、12000张图片的蘑菇数据集,为快速验证yolov5分类模块或CNN迁移学习提供了便利。合理运用类别权重、感知哈希去重及混淆矩阵分析,能有效提升模型泛化能力。本文围绕该数据集的目录结构解析、yolov5分类训练链路及常见陷阱排查展开,帮助开发者从数据检查到模型评估建立完整工程实践。

weixin_42528534的博客 289

《机器学习》第 8 章 - 常用深度网络模型

本文介绍了三种核心深度网络模型及其应用:1)卷积神经网络(CNN),通过LeNet-5和ResNet实例展示图像处理能力;2)循环神经网络(RNN/LSTM),以IMDB情感分析为例演示文本处理;3)生成对抗网络(GAN),实现MNIST手写数字生成。文章包含可直接运行的完整代码(Python+PyTorch),配套可视化效果图,涵盖图像分类、文本摘要、目标检测等实战案例。核心知识点包括CNN的卷积/池化操作、LSTM的门控机制、GAN的对抗训练策略,并提供了基础题、编程题和应用题供练习。所有代码均经过测试

2302_80961196的博客 1233

轻量级果蔬分类系统:YOLOv5骨干+CNN/MobileNet双模型实战

果蔬图像分类是计算机视觉在农业与零售边缘场景中的基础任务,其核心在于平衡精度、速度与部署可行性。本文围绕YOLOv5骨干网络提取特征、接自定义分类头的技术路径,解析轻量级模型(CNN与MobileNet)如何替代端到端目标检测,在无GPU设备上实现稳定推理。重点涵盖YOLO格式数据集结构设计、归一化标签对齐、固定随机种子保障复现性、TensorFlow/Keras适配CPU优化等工程细节,并结合Grad-CAM热力图可视化验证模型判别依据。适用于收银终端、智能分拣、无人货架等低算力工业落地场景,尤其解决新手

weixin_27372101的博客 277

实用电路精讲系列---仪表放大器

摘要 仪表放大器通过三级运放架构实现高共模抑制比(CMRR>100dB)和精密差分放大,其核心是第一级同相运放提供高输入阻抗和可调增益(G=1+2R/RG),第二级差分运放消除共模干扰。具有低失调(≤50μV)、低温漂(≤0.6μV/℃)特性,广泛应用于智能断路器电流监测、ECG心电信号放大等场景。典型电路采用LTC1049运放,通过匹配电阻网络实现199倍差分增益,结合输出缓冲确保信号稳定性。设计时需注意输入共模电压范围限制和增益电阻精度,优选集成IC(如AD620、INA128)以规避分立元件匹配

weixin_40590799的博客 2072

企业级YOLO模型海洋生物目标检测系统智能识别系统源码|Python+YOLO+CNN架构+完整数据集【完整版】

企业级YOLO模型海洋生物目标检测系统智能识别系统源码|Python+YOLO+CNN架构+完整数据集【完整版】,拿走直接用(附源码,数据库,视频,可提供说明文档(通过*AIGC*)*技术包括:MySQL、VueJS、ElementUI、(Python或者Java或者.NET)等等*功能如图所示。可以滴我获取详细的视频介绍

qq5_910946292的博客 923

LNA设计学习心得记录----MOS管的选取

LNA设计学习心得---MOS管的选取仿真

weixin_40359668的博客 6127

苹果检测数据集任务 苹果数据集 采用多模态融合的卷积神经网络(CNN)来提高检测多模态果园苹果检测数据集(RGB-红外-深度图)任务性能

苹果检测数据集任务 苹果数据集 采用多模态融合的卷积神经网络(CNN)来提高检测多模态果园苹果检测数据集(RGB-红外-深度图)任务性能

QQ_1309399183的博客 327

拆开华为BBU5900,看看5G基站的大脑里到底装了啥?

本文深度拆解华为BBU5900,揭示5G基站核心处理单元的硬件架构与设计哲学。通过详细解析模块化设计、智能电源系统和动态散热方案,展现其支撑千兆速率、毫秒级时延的技术奥秘,为5G网络部署提供实用参考。

weixin_31456563的博客 562

保姆级教程:在Windows 11上用VSCode和Conda搞定Depth-Anything-3(含常见报错修复)

本文提供在Windows 11系统上使用VSCode和Conda配置Depth-Anything-3的完整教程,涵盖环境搭建、依赖安装、常见报错修复及深度图生成实战。特别针对CUDA与PyTorch版本匹配、Hugging Face镜像加速等关键问题提供解决方案,帮助开发者高效实现计算机视觉中的深度估计应用。

weixin_30338481的博客 347

基于YOLO目标检测的眼底图像关键解剖结构检测系统设计与实现

针对眼底图像存在的光照不均、对比度低、噪声干扰问题,采用专属预处理技术:通过高斯滤波去除图像椒盐噪声,利用直方图均衡化增强眼底结构对比度,同时运用随机裁剪、翻转、缩放、色域变换等数据增强技术,扩充数据集多样性,提升模型泛化能力。因此,本文基于改进YOLO算法,设计并实现眼底图像关键解剖结构检测系统,精准定位视盘、视杯、黄斑、血管等核心结构,为眼科疾病智能筛查提供技术支撑,兼具重要的学术研究价值与临床应用价值。优化锚框聚类算法,适配微小目标尺度特征,同时通过迭代训练筛选最优模型权重,提升模型鲁棒性。

xn19950718的博客 14

基于51单片机语音识别智能台灯设计

智能台灯;语音识别;STC89C52RC单片机

Benso_H的博客 5842

第P9周:YOLOv5-Backbone模块实现

Yolov5算法是目前应用最广泛的目标检测算法之一,它基于深度学习技术,在卷积神经网络的基础上加入了特征金字塔网络和SPP结构等模块,从而实现了高精度和快速检测速度的平衡。YOLOv5 模型主要由 Backbone、Neck 和Head 三部分组成,网络模型见下图。backbone:进行特征提取。常用的骨干网络有VGG,ResNet,DenseNet,MobileNet,EfficientNet,CSPDarknet 53,Swin Transformer等。

努力学习的大小宝 839

Unity中语法糖带来的GC问题 ——那些看起来优雅、实际上在背后偷偷生垃圾的代码

*语法糖(Syntactic Sugar)**指的是编程语言中为了让代码更简洁、易读而提供的简便写法。比如C#中的foreachlambda表达式LINQ自动属性等。语法糖本身不是坏事,但在Unity等对GC敏感的环境下,要警惕语法糖带来的隐式内存分配。合理使用语法糖,关键场合用更“丑陋”但高效的写法,才能保证游戏流畅运行。下面我将更深入地分析Unity中语法糖导致GC的原理、具体场景、检测与优化技巧,并补充一些容易忽视的细节。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 517

5G 模组 FM650 USB模式查询及网络配置

完成以上配置后,5G模组可进行搜网,入网成功后,上位机获取 5G IP。

十年通信老兵的技术修炼之路——从3G到5G,从地面基站到卫星通信。 1323

【yolov5小技巧(2)】---将yolov5中的特征图以热力图的方式进行可视化

在论文中我们经常可以见到提取的物体特征以热力图的形式展示出来,首先我们要了解为什么要将特征图以热力图的形式进行可视化,将特征图以热力图的方式进行可视化在深度学习中有几个重要的原因:强调激活区域:热力图可以帮助我们直观地理解哪些区域对于模型的决策是最重要的。通过热力图,我们可以看到特征图中哪些区域具有较高的激活值,从而了解模型对于不同特征的关注程度。可视化激活模式:热力图可以展示模型在特定任务或数据集上学到的激活模式。

慕溪同学的博客 5937

uniapp - 解决真机调试报错 request:fail abort statusCode:-1 java.security.cert.CertPathValidatorException: Tr

uni-app,真机调试报错,app端平台,安卓Android,安卓App发布线上报错,打包后接口请求失效了,api接口报错,真机运行安卓app时接口不通且报错,request:failabortstatusCode:-1java.security.cert.CertPathValidatorException:Trustanchorforcertificationpathnotfound.,真机调试,苹果ios真机报错,Uniapp打包到app后报错,uni-app真机调试报错,服务器

🏆 前端领域优质创作者 1万+

从YOLOv5看深度学习中的特征分层与多尺度融合

摘要: 本文系统分析了YOLOv5目标检测框架中浅层与深层特征的协同机制。通过New CSP-Darknet53主干网络提取多级特征(C3-C5),结合PAN结构的双向特征融合策略,实现细节与语义信息的互补。浅层特征(32×32)保留空间细节利于小目标检测,深层特征(8×8)具有强语义表达,而双向路径(自顶向下/自底向上)通过特征拼接与采样完成多尺度信息交互。实验表明,这种分层设计有效平衡了定位精度与分类性能,为不同尺寸目标检测提供了通用解决方案。特征融合可视化与代码解析进一步验证了其技术可行性。

ak47maker的博客 1391

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

深度学习卷积神经网络YOLOv5详解

样本扩充的依据是判断gt的中心点落在的网格相对的上下左右偏移量.( 例如,gt的中心在网格中偏向左上角,那么gt所在gird的上方和左方的gird也会被扩充为gt样本.同时,扩充的gird所对应的gt框是由原始的gt框移动一个单位到其所在的gird中) ,下面这张图可以很好的解释这一过程。Yolov4的Neck结构中,采用的都是普通的卷积操作。作者认为,在项目实际使用时,很多图片的长宽比不同,因此缩放填充后,两端的黑边大小都不同,而如果填充的比较多,则存在信息冗余,影响推理速度。

2万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: yolov5 7.0运行segment/predict.py时出现TypeError: meshgrid() got an unexpected keyword argument ‘indexing‘
下一篇: Python保存图片像素值至txt文档
晓shuo
晓shuo 优质创作者: 人工智能技术领域 优质创作者: 人工智能技术领域
博客等级 码龄6年 4万+粉丝 113原创
评论 19
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓shuo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值