【AI不惑境】计算机视觉中注意力机制原理及其模型发展和应用

通道注意力与空间注意力【学习篇】 卷积神经网络建立在卷积运算的基础上,它通过在局部感受野内将空间和通道信息融合在一起来提取信息特征。这种方式通常将每一个通道特征赋予相同的重要程度,但是事实上有些通道比较重要,有些通道没这么重要,为此,引入了通道注意力机制(ChannelAttentionMechanism,CAM),聚焦特征图中的重要通道,为重要通道分配更高的权重。比如下图的建筑物图像经过不同的卷积核卷积操作后,得到了不同的特征图,从特征图可以看出来,每一个通道特征的重要程度存在差异, 阅读详情

 

 

 

 

大家好,这是专栏《AI不惑境》的第七篇文章,讲述计算机视觉中的注意力(attention)机制。

 

进入到不惑境界,就是向高手迈进的开始了,在这个境界需要自己独立思考。如果说学习是一个从模仿,到追随,到创造的过程,那么到这个阶段,应该跃过了模仿和追随的阶段,进入了创造的阶段。从这个境界开始,讲述的问题可能不再有答案,更多的是激发大家一起来思考。

 

作者&编辑 | 言有三

 

 

 

Attention机制在近几年来在图像,自然语言处理等领域中都取得了重要的突破,被证明有益于提高模型的性能。Attention机制本身也是符合人脑和人眼的感知机制,这次我们主要以计算机视觉领域为例,讲述Attention机制的原理,应用以及模型的发展。

 

 

 

 

 

1 Attention机制与显著图

 

1.1 何为Attention机制

 

所谓Attention机制,便是聚焦于局部信息的机制,比如图像中的某一个图像区域。随着任务的变化,注意力区域往往会发生变化。

 

640?wx_fmt=jpeg

 

面对上面这样的一张图,如果你只是从整体来看,只看到了很多人头,但是你拉近一个一个仔细看就了不得了,都是天才科学家。

 

图中除了人脸之外的信息其实都是无用的,也做不了什么任务,Attention机制便是要找到这些最有用的信息,可以想见最简单的场景就是从照片中检测人脸了。

 

1.2 基于Attention的显著目标检测

 

和注意力机制相伴而生的一个任务便是显著目标检测,即salient object detection。它的输入是一张图,输出是一张概率图,概率越大的地方,代表是图像中重要目标的概率越大,即人眼关注的重点,一个典型的显著图如下:

 

640?wx_fmt=jpeg

 

右图就是左图的显著图,在头部位置概率最大,另外腿部,尾巴也有较大概率,这就是图中真正有用的信息。

 

显著目标检测需要一个数据集,而这样的数据集的收集便是通过追踪多个实验者的眼球在一定时间内的注意力方向进行平均得到,典型的步骤如下:

 

(1) 让被测试者观察图。

(2) 用eye tracker记录眼睛的注意力位置。

(3) 对所有测试者的注意力位置使用高斯滤波进行综合。

(4) 结果以0~1的概率进行记录。

 

于是就能得到下面这样的图,第二行是眼球追踪结果,第三行就是显著目标概率图。

 

640?wx_fmt=jpeg

 

上面讲述的都是空间上的注意力机制,即关注的是不同空间位置,而在CNN结构中,还有不同的特征通道,因此不同特征通道也有类似的原理,下面一起讲述。

 

 

 

 

 

 

2 Attention模型架构

 

注意力机制的本质就是定位到感兴趣的信息,抑制无用信息,结果通常都是以概率图或者概率特征向量的形式展示,从原理上来说,主要分为空间注意力模型,通道注意力模型,空间和通道混合注意力模型三种,这里不区分soft和hard attention。

 

2.1 空间注意力模型(spatial attention)

 

不是图像中所有的区域对任务的贡献都是同样重要的,只有任务相关的区域才是需要关心的,比如分类任务的主体,空间注意力模型就是寻找网络中最重要的部位进行处理。

 

我们在这里给大家介绍两个具有代表性的模型,第一个就是Google DeepMind提出的STN网络(Spatial Transformer Network[1])。它通过学习输入的形变,从而完成适合任务的预处理操作,是一种基于空间的Attention模型,网络结构如下:

 

640?wx_fmt=png

 

这里的Localization Net用于生成仿射变换系数,输入是C×H×W维的图像,输出是一个空间变换系数,它的大小根据要学习的变换类型而定,如果是仿射变换,则是一个6维向量。

 

这样的一个网络要完成的效果如下图:

 

640?wx_fmt=png

 

即定位到目标的位置,然后进行旋转等操作,使得输入样本更加容易学习。这是一种一步调整的解决方案,当然还有很多迭代调整的方案,感兴趣可以去有三知识星球星球中阅读。

 

相比于Spatial Transformer Networks 一步完成目标的定位和仿射变换调整,Dynamic Capacity Networks[2]则采用了两个子网络,分别是低性能的子网络(coarse model)和高性能的子网络(fine model)。低性能的子网络(coarse model)用于对全图进行处理,定位感兴趣区域,如下图中的操作fc。高性能的子网络(fine model)则对感兴趣区域进行精细化处理,如下图的操作ff。两者共同使用,可以获得更低的计算代价和更高的精度。

 

640?wx_fmt=png

 

由于在大部分情况下我们感兴趣的区域只是图像中的一小部分,因此空间注意力的本质就是定位目标并进行一些变换或者获取权重。

 

2.2 通道注意力机制

 

对于输入2维图像的CNN来说,一个维度是图像的尺度空间,即长宽,另一个维度就是通道,因此基于通道的Attention也是很常用的机制。

 

SENet(Sequeeze and Excitation Net)[3]是2017届ImageNet分类比赛的冠军网络,本质上是一个基于通道的Attention模型,它通过建模各个特征通道的重要程度,然后针对不同的任务增强或者抑制不同的通道,原理图如下。

 

640?wx_fmt=png

 

在正常的卷积操作后分出了一个旁路分支,首先进行Squeeze操作(即图中Fsq(·)),它将空间维度进行特征压缩,即每个二维的特征图变成一个实数,相当于具有全局感受野的池化操作,特征通道数不变。

 

然后是Excitation操作(即图中的Fex(·)),它通过参数w为每个特征通道生成权重,w被学习用来显式地建模特征通道间的相关性。在文章中,使用了一个2层bottleneck结构(先降维再升维)的全连接层+Sigmoid函数来实现。

 

得到了每一个特征通道的权重之后,就将该权重应用于原来的每个特征通道,基于特定的任务,就可以学习到不同通道的重要性。

 

将其机制应用于若干基准模型,在增加少量计算量的情况下,获得了更明显的性能提升。作为一种通用的设计思想,它可以被用于任何现有网络,具有较强的实践意义。而后SKNet[4]等方法将这样的通道加权的思想和Inception中的多分支网络结构进行结合,也实现了性能的提升。

 

通道注意力机制的本质,在于建模了各个特征之间的重要性,对于不同的任务可以根据输入进行特征分配,简单而有效。

 

2.3 空间和通道注意力机制的融合

 

前述的Dynamic Capacity Network是从空间维度进行Attention,SENet是从通道维度进行Attention,自然也可以同时使用空间Attention和通道Attention机制。

 

CBAM(Convolutional Block Attention Module)[5]是其中的代表性网络,结构如下:

 

640?wx_fmt=png

 

通道方向的Attention建模的是特征的重要性,结构如下:

 

640?wx_fmt=png

 

同时使用最大pooling和均值pooling算法,然后经过几个MLP层获得变换结果,最后分别应用于两个通道,使用sigmoid函数得到通道的attention结果。

 

空间方向的Attention建模的是空间位置的重要性,结构如下:

 

640?wx_fmt=png

 

首先将通道本身进行降维,分别获取最大池化和均值池化结果,然后拼接成一个特征图,再使用一个卷积层进行学习。  

 

这两种机制,分别学习了通道的重要性和空间的重要性,还可以很容易地嵌入到任何已知的框架中。

 

除此之外,还有很多的注意力机制相关的研究,比如残差注意力机制,多尺度注意力机制,递归注意力机制等。

 

感兴趣的同学可以去我们知识星球中阅读相关的网络结构主题。

 

【知识星球】超3万字的网络结构解读,学习必备

 

640?wx_fmt=jpeg

 

640?wx_fmt=jpeg

 

 

 

 

 

 

3 Attention机制典型应用场景

 

从原理上来说,注意力机制在所有的计算机视觉任务中都能提升模型性能,但是有两类场景尤其受益。

 

3.1 细粒度分类

 

关于细粒度分类的基础内容,可以回顾公众号的往期文章。

 

【图像分类】细粒度图像分类是什么,有什么方法,发展的怎么样

 

640?wx_fmt=png

 

我们知道细粒度分类任务中真正的难题在于如何定位到真正对任务有用的局部区域,如上示意图中的鸟的头部。Attention机制恰巧原理上非常合适,文[1],[6]中都使用了注意力机制,对模型的提升效果很明显。

 

3.2 显著目标检测/缩略图生成/自动构图

 

我们又回到了开头,没错,Attention的本质就是重要/显著区域定位,所以在目标检测领域是非常有用的。

 

640?wx_fmt=jpeg

 

640?wx_fmt=jpeg

 

上图展示了几个显著目标检测的结果,可以看出对于有显著目标的图,概率图非常聚焦于目标主体,在网络中添加注意力机制模块,可以进一步提升这一类任务的模型。

 

除此之外,在视频分析,看图说话等任务中也比较重要,相关内容将在有三AI知识星球中每日更新。

 

 

 

 

参考文献

[1] Jaderberg M, Simonyan K, Zisserman A. Spatial transformer networks[C]//Advances in neural information processing systems. 2015: 2017-2025.

[2] Almahairi A, Ballas N, Cooijmans T, et al. Dynamic capacity networks[C]//International Conference on Machine Learning. 2016: 2549-2558.

[3] Hu J, Shen L, Sun G. Squeeze-and-excitation networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 7132-7141.

[4] Li X, Wang W, Hu X, et al. Selective Kernel Networks[J]. 2019.

[5] Woo S, Park J, Lee J Y, et al. Cbam: Convolutional block attention module[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 3-19.

[6] Fu J, Zheng H, Mei T. Look closer to see better: Recurrent attention convolutional neural network for fine-grained image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 4438-4446.

 

 

 

 

总结

 

 

 

 

 

 

注意力机制是一个原理简单而有效的机制,符合人眼的视觉感知原理,在实现上也容易嵌入当前的主流模型架构,是值得采用和学习的技术。

 

下期预告:深度学习中的无监督学习。

 

 

 

 

 

 

有三AI夏季划

 

 

 

 

640?wx_fmt=png

 

640?wx_fmt=png

 

暑期正浓,有三AI夏季划进行中,相比春季划内容更难更全,且更加贴近工业界实战,目标是系统性成长为中级CV算法工程师。这一次的报名周期会持续到国庆,请有需要的同学持续关注,点击图片阅读详细信息。

 

 

 

转载文章请后台联系

侵权必究

 

 

 

640?wx_fmt=png

 

 

 

 

 

640?wx_fmt=png

 

 

640?wx_fmt=png

 

 

 

 

 

 

往期修行境界

 

 

 

 

 

 

 

 

注意力机制:通道注意力机制、空间注意力机制、CBAM(附有完整代码) 注意力机制(Attention Mechanism)是一种模仿人类注意力机制的计算机科学原理,主要用于提高神经网络在处理序列数据时的性能。在深度学习中,注意力机制被广泛应用于各种任务,如自然语言处理、计算机视觉和强化学习等领域。注意力机制的核心思想是让模型能够在处理输入数据时,动态地关注输入的不同部分,而不是一概而论地平均对待所有输入。通过引入注意力机制,模型可以根据输入数据的重要性分配不同的权重,从而使模型能够更加集中精力处理与当前任务相关的信息,提高模型的表现和泛化能力。 阅读详情

相关推荐

视觉 注意力机制——通道注意力、空间注意力、自注意力

本文介绍注意力机制的概念和基本原理,并站在计算机视觉CV角度,进一步介绍通道注意力、空间注意力、混合注意力、自注意力等。

黎国溥 12万+

【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解

一文带你读懂注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制,超详细的讲解,小白也能看得懂!

路人贾的博客 17万+

PaddleOCR转ONNX模型实战:5分钟搞定中文OCR推理部署(附完整代码)

本文详细介绍了将PaddleOCR模型转换为ONNX格式并进行高效推理部署的完整实战方案。通过Paddle2ONNX工具实现模型转换,利用ONNX Runtime构建跨平台推理引擎,涵盖环境配置、模型优化、批量处理及多平台部署等关键步骤,显著提升中文OCR在边缘设备上的推理性能。

weixin_29051811的博客 617

通俗易懂理解通道注意力机制(CAM)与空间注意力机制(SAM)

通俗易懂理解通道注意力机制(CAM)与空间注意力机制(SAM)

IT菜鸟 12万+

【Out-of-Distribution Detection】Evidential Deep Learning in NeurIPS 2018 个人理解

核心思想是将分类器的概率输出视为一个狄利克雷分布(Dirichlet Distribution)并替换,之后引入两个损失分别负责保证预测结果准确性和提升被错误分类的样本的不确定性。

研究兴趣:开放集识别、开放世界识别、新类发现、增量学习、少样本学习 2436

图像质量评估(5) -- 畸变(Distortion)

当图像中原本应该是直线的地方看起来发生了不自然的变形或扭曲时,我们称为图像畸变。有三种类型的镜头畸变:桶形畸变(后文使用英文barrel),枕形畸变(后文使用pincushion)和胡子畸变(后文使用英文wavef或mustache,这种畸变里包含了桶形畸变和枕形畸变)。有一个重要的点需要注意,根据透镜的类型以及透镜是否能够从相机中移除等条件不同,畸变会有不同的表现。 总的来说,旋转对称光学系统功能上会产生和物体几何相似的图形。但也有少数特殊的系统是例外,例如鱼眼镜头,这种镜头几何是故意设计为

vivo01的专栏 2万+

注意力机制原理_【AI不惑境】计算机视觉中注意力机制原理及其模型发展和应用...

大家好,这是专栏《AI不惑境》的第八篇文章,讲述计算机视觉中的注意力(attention)机制。进入到不惑境界,就是向高手迈进的开始了,在这个境界需要自己独立思考。如果说学习是一个从模仿,到追随,到创造的过程,那么到这个阶段,应该跃过了模仿和追随的阶段,进入了创造的阶段。从这个境界开始,讲述的问题可能不再有答案,更多的是激发大家一起来思考。作者&编辑 | 言有三Attention...

weixin_39753857的博客 329

CAN信号定义避坑指南:Kvaser Database Editor里Byteorder和Bitpos设置的那些‘坑’

本文详细解析了在Kvaser Database Editor中配置CAN信号时,字节序(Byteorder)和起始位(Bitpos)设置的常见错误及解决方案。通过实际案例和验证技巧,帮助工程师避免DBC文件配置中的陷阱,确保车载电子系统的稳定通信。

weixin_28678831的博客 360

特征图注意力_【AI不惑境】计算机视觉中注意力机制原理及其模型发展和应用...

大家好,这是专栏《AI不惑境》的第八篇文章,讲述计算机视觉中的注意力(attention)机制。进入到不惑境界,就是向高手迈进的开始了,在这个境界需要自己独立思考。如果说学习是一个从模仿,到追随,到创造的过程,那么到这个阶段,应该跃过了模仿和追随的阶段,进入了创造的阶段。从这个境界开始,讲述的问题可能不再有答案,更多的是激发大家一起来思考。作者&编辑 | 言有三首发于有三AI公众号【AI不...

weixin_39653320的博客 604

RANSAC地面点分割:从原理到C++实战优化

本文深入解析RANSAC算法在点云地面分割中的原理与C++实战优化,涵盖动态迭代次数、自适应阈值等关键技巧,通过并行计算和内存访问优化提升性能,适用于激光雷达点云处理。

weixin_29015051的博客 278

【YOLOv8系列】YOLOv8的webUI界面设计;通过Streamlit实现YOLOv8的可视化交互界面设计

但是我为了避免重复性的工作,且为了避免重复安装之前(安装pytorch和yolov8时)已经安装好的库,因此写了一个python脚本进行安装;需要提前在有网络连接的电脑上下载所有必要的依赖项,然后将这些文件传输到离线的机器上进行安装。脚本将自动跳过已安装的包,并安装其余的 .whl 文件。在离线的机器上,切换到包含下载好的文件的目录。证明我们的streamlit安装成功了。证明你的streamlit安装成功了。第一步:在有网络连接的电脑上下载。第二步:将下载的文件传输到离线机器。文件)传输到离线的机器上。

AnChenliang_1002的博客 1567

【完结】你对深度学习模型的理解是否足够深刻,这12篇文章可以作为一个参考...

文/编辑 | 言有三好的模型结构是深度学习成功的关键因素之一,不仅是非常重要的学术研究方向,在工业界实践中也是模型是否能上线的关键。对各类底层深度学习模型设计和优化技术理解的深度是决定我...

hacker_long的专栏 1153

由浅入深理解Latent Diffusion/Stable Diffusion(5):利用预训练模型快速开始自己的科研任务

从零开始训练一个stable diffusion大概需要16万美元和1个月的时间,这对于一般的科研工作者来说难以承受,所以如何利用预训练模型快速开始自己的科研训练是一个非常有价值的问题。这篇博客将演示如何利用预训练模型快速开始自己的科研任务,希望对大家有所帮助!

沉迷单车的追风少年 3373

言有三文章 - AI系列完整阅读

言有三文章 - AI系列完整阅读 第一期:【AI白身境】深度学习从弃用windows开始 第二期:【AI白身境】Linux干活三板斧,shell、vim和git 第三期:【AI白身境】学AI必备的python基础 第四期:【AI白身境】深度学习必备图像基础 第五期:【AI白身境】搞计算机视觉必备的OpenCV入门基础 第六期:【AI白身境】只会用Python?g++,CMake和...

喜欢打酱油的老鸟 1155

ubuntu 安装node和npm

在ubuntu中经常需要用到node ,npm,因为npm基本会和node同时安装,所以只需要安装node即可。可以使用 nvm(Node Version Manager)来管理你的 Node.js 版本。

风吹落叶的博客 2293

深度学习工具包 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")

「完结」你对深度学习模型的理解是否足够深刻,这12篇文章了解下

2020-05-28 18:07:49 文/编辑 | 言有三 好的模型结构是深度学习成功的关键因素之一,不仅是非常重要的学术研究方向,在工业界实践中也是模型是否能上线的关键。对各类底层深度学习模型设计和优化技术理解的深度是决定我们能否在深度学习项目中游刃有余的关键,因此我们在修行之路专栏的《不惑境界》中,着重于深入讲解主流的网络结构设计思想,包括对网络深度,宽度的理解,残差网络和分组网络的设计,多尺度与注意力机制的设计,以及深度学习模型压缩之模型剪枝,量化,蒸馏,还有AutoML技术,本次来给.

喜欢打酱油的老鸟 710

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

有三AI发布360页11万字深度学习CV算法工程师成长指导手册,可下载收藏打印,未完待续...

文/编辑 | 言有三字少事大,各位同学,今天有三AI平台发布《深度学习视觉算法工程师成长指导手册》,超过11万字,360页word文档,可下载收藏打印,且还有大约1/3内...

hacker_long的专栏 939

老版QQ原生表情gif动态

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

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

学习了哪些知识,计算机视觉才算入门?

作者:言有三 链接:https://www.zhihu.com/question/26836846/answer/996660212 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 从两个方向来回答这个问题,第一个是从零开始怎么系统性入门计算机视觉,这是一个路线问题。第二个是如何系统性学习,涉及到计算机视觉的各个方向。 第一个问题,如何系统性进阶,我斗胆将...

喜欢打酱油的老鸟 916

【总结】有三AI视觉算法工程师成长指导手册不更新了?不,换视频更新了!...

早期的粉丝们想必还记得我们之前发布的400多页的视觉算法工程师成长指导手册,光是在咱们公众号后台就有超过5000的下载量,已经有段时间没有更新了,因此有小伙伴问我们是不是不更新了,答案是会...

hacker_long的专栏 808

【总结】有三AI所有原创模型分析设计优化与部署相关的学习资料汇总(2022年12月)...

好的模型结构是深度学习成功的关键因素之一,不仅是非常重要的学术研究方向,在工业界实践中也是模型是否能上线的关键。对各类底层深度学习模型设计和优化技术理解的深度是决定我们能否在深度学习项目中游刃有余的关键,而模型的部署则是项目的最后一环。为了让大家能够系统性掌握相关内容,为以后做研究以及就业打下基础,我们平台输出了海量与模型有关的内容,包括公众号文章,书籍,以及4门对应的视频课程,本次来汇总一下相关...

hacker_long的专栏 600

【AI产品】如何让Google的AI给你捕捉最美的自拍瞬间

欢迎来到《AI产品》专栏,这一个专栏是面向所有对人工智能技术感兴趣的朋友。在这个专栏里,我们会给大家推荐好玩的AI产品,剖析背后的关键技术,并推荐相关学习资料。今天要推荐的这款产品是Selfissimo,这是一款非常有情怀的app,可以自动抓取你最好的自拍照,黑白复古风格。作者&编辑 | 言有三什么是"Selfissimo"拥有人脸的图像往往更容易收到评论和点赞,其中自拍占据了很大一部分。...

hacker_long的专栏 602

【通知】有三AI更新420页14万字视觉算法工程师成长指导手册,可下载收藏打印...

各位同学,可还记得我们发布的《深度学习视觉算法工程师成长指导手册》,现在更新了,超过14万字,420页文档,可下载收藏打印,目录如下,文末提供了下载方式。手册简介目前深度学习在图像,语音...

hacker_long的专栏 1365

计算机视觉面试

计算机视觉(AI)面试大全_计算机视觉面试_大黑山修道的博客-优快云博客深度可分离卷积(DepthwiseSeparableConvolution):Depthwise卷积与Pointwise卷积_pointwise conv with channel attention_我是一个对称矩阵的博客-优快云博客MobileNetv2笔记:倒残差和线性Bottlenecks - 知乎深度学习基础:深入理解Squeeze-and-Excitation (SE)网络_C_小米同学的博客-优快云博客【CV知识点扫

xiaocong1990的博客 1494

【杂谈】深度学习之模型设计书看完了完全不过瘾?那这些拓展资料你都看了不?...

大家应该还记得有三在今年6月份出版的新书《深度学习之模型设计》吧,这是一本讲述深度学习模型设计核心算法的书籍,同时配套有大量实战案例,书籍介绍链接如下。言有三新书来袭!业界首次深入全面讲...

hacker_long的专栏 858

推荐 | 出身于中科院与360AI研究院的大佬编著,超500篇AI纯原创系统性学习文章...

微信公众号今天给大家推荐一个微信公众号《有三AI》,堪称AI方向,尤其是计算机视觉方向的干货集中营,内容非常的丰富,已经原创发表500多篇系统性的原创高质量AI领域文章,100多万字,共...

weixin_38753422的博客 517
上一篇: 【每周NLP论文推荐】从预训练模型掌握NLP的基本发展脉络
下一篇: 【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

言有三

三人行必有AI

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

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

打赏作者

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

抵扣说明:

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

余额充值