笔记(总结)-卷积神经网络

CNN卷积神经网络学习笔记1:背景介绍 Convolutional Neural Network 卷积神经网络是基于人工神经网络提出的。人工神经网络模拟人的神经系统,由一定数量的神经元构成。在一个监督学习问题中,有一组训练数据(xi,yi)(x_i,y_i),x是样本,y是label,把它们输入人工神经网络,会得到一个非线性的分类超平面hw,b(x)h_{w,b}(x),在这篇笔记中先梳理一下传统人工神经网络的基本概念,再基于传统人工神经 阅读详情

神经网络是一棵根深叶茂的大树,有过许多果实,可是都略显青涩,无法摘食。直到2010年后,这棵大树才真正可谓硕果累累,其中最璀璨甘甜的就是卷积神经网络(Convolutional Neural Network,下称CNN)。在这之后,神经网络再次成为科研界的热点,在这个数据和算力初具规模的时代,神经网络终于展现出了应用的价值。闲话到此,只是想说明CNN对于神经网络的意义。本篇将主要讨论CNN的模型原理,并简述其在分类问题上的应用。


起源

全连接前馈神经网络(前馈神经网络指一层神经元只接受上一层作为输入,并输出到下一层,该层神经元之间、该层与其它层都没有连接关系)以其复杂的连接方式,在一段时间内展现出了很强的拟合能力。但是面对特定问题时,展示出了缺陷。比如面对图像问题时,各像素点打平变成一个向量输入时,假设图像尺寸为10*10=100个像素点,隐层神经元有1024个,那么参数个数为100*1024个,如此大的参数空间,在训练时是无法忍受的。

CNN也是一种前馈神经网络,受生物学上的“感受野”机制带来的灵感而提出。

感受野主要是指听觉系统、本体感觉系统和视觉系统中神经元的一些性质。比如在视觉神经系统中,一个神经元的感受野是指视网膜上的特定区域,只有这个区域内的刺激才能够激活该神经元。

CNN具有感受野提取特征的能力,参数少、训练快等诸多优点。很好地解决了图像特征提取的问题。

接下来的叙述思路为理解CNN,即在给定CNN的结构下,如何理解CNN中各部分的设计与功能。由于能力有限,如果按照“如何得出CNN的结构设计”这一种方式来讲,恐怕难以讲清,虽然这种思路是更加自然的,也是CNN发明者的智慧精华所在。


整体设计

以图像分类问题为例(即给定一副图,根据图片内容,将图片分类到相关类别),CNN架构图如下:
这里写图片描述
原始图片的像素作为原始特征输入到神经网络中,经过卷积层(Convolution)-池化层(Pooling)组合模块的堆叠,完成特征提取过程,此时得到的是图像的高维特征表示。然后将特征打平(Flatten),输入到全连接网络中,完成分类功能。可以看到,整个CNN的架构、功能分为清晰的两部分:卷积-池化模块的特征抽取+全连接网络的分类。其中全连接网络是已经知道的,CNN的贡献在于前一部分。

题外话:单独的前馈神经网络其实也可以看做两个模块,中间隐层完成了特征提取过程,最后一层完成了分类过程。但由于网络层都是全连接,特征提取和分类某种程度上杂糅了起来,耦合度比较高。这样的网络在训练时其实是不好做的。而CNN很好的解决了这个问题,架构上进行了解耦,模块各司其职,优化也可以分别进行。


卷积层(Convolution Layer)

考虑一张简单的6*6的像素图,像素不含灰度值时(像素点取值为0或1),表示如下图。

卷积层主要由卷积核(filter)构成。逻辑上来说,卷积核是形如下图的参数矩阵:

卷积核与像素矩阵进行卷积运算,得到特征,卷积神经网络也因此得名。运算图如下:
这里写图片描述
可以看到,卷积核与像素矩阵中同尺寸的部分进行点积运算(即两个同尺寸矩阵的对应元素相乘,对乘积结果进行求和),公式化表示如下:

featurek=∑i,jaijbij   aij∈Matriximage, bij∈Matrixfilterfeaturek=∑i,jaijbij   aij∈Matriximage, bij∈Matrixfilter

卷积核和像素矩阵的不同部分做卷积运算,提取出不同的featurefeature。可以想象卷积核贴附在像素矩阵上方,沿着不同方向滑动(stride),从而提取不同区域的特征。最终得到特征矩阵,特征矩阵的尺寸与卷积核尺寸、滑动步长、像素矩阵相关。
这里写图片描述
当使用多个卷积核时,便能得到多个特征矩阵。对于卷积核,我们可以理解为特征提取器,这种特征可能是图像中的轮廓、边角、颜色等信息。卷积核1提取整个图像上的轮廓信息,卷积核2提取整个图像上的颜色信息等等。而特征矩阵则是整个图像矩阵不同局部的某种特征表示。
这里写图片描述
直观上来看,卷积核只是完成了卷积运算,而提取出的特征也不过是乘积求和的数值。但由于神经网络有惊人的拟合能力,BP优化的过程中能产生很多神奇的效果。当我们拿到卷积层的中间结果,并进行合理展示时,这种特征提取过程更加明显(数学确实是个神奇的东西,这种结果看起来不可思议):
这里写图片描述

以上分析都是基于卷积层的逻辑视图。考虑卷积层计算的物理视图(转化为神经网络的神经元计算)。像素矩阵按行列打平,作为输入神经元;特征矩阵中的元素相当于隐层神经元;而卷积核则相当于权值参数。卷积运算的过程实际上就是:输入神经元的特定部分,乘以权值矩阵,得到隐层神经元的过程。
这里写图片描述
由上图可以看到,相比于全连接神经网络,每个隐层神经元和每个输入神经元都有连接。卷积层只是进行了局部连接(稀疏连接)。
这里写图片描述
除此之外,卷积层还进行了参数共享。由之前的逻辑视图已经看到,卷积核在提取每个局部特征的过程中,是不变的。结合上图可以看到,同一卷积核得到的不同隐层神经元,与输入神经元连接的参数是一样的。

这两者结合起来,极大地减少了卷积层的参数空间。并且由逻辑视图可以看到,卷积核在不同图像局部的卷积运算、不同的卷积核的卷积运算都是相互独立,可以使用并行计算来加速卷积层的运算。这也是CNN在工业界能够得到大规模应用的原因。


池化层(Pooling Layer)

卷积层在小参数空间下完成了特征提取,然而特征矩阵(隐层)神经元的个数仍然是众多的。当像素矩阵巨大时,特征矩阵的神经元个数就会变得很多(一般卷积核的尺寸不会太大,从而保证能提取到足够小的局部的特征)。这样就会使得后续层的参数空间仍然很大。池化层通过对特征采样,进一步减少了神经元个数。
这里写图片描述
针对原图进行像素级别的采样,能在保持原图大致内容的前提下,达到图像压缩的目的。池化层也是如此,经过采样,虽然可能丢失一些特征细节,但能保证抓住其中的要点。
这里写图片描述
参照上图,左边为特征矩阵,右边为池化后的结果。以黄色框内元素为例,MaxPoolingMaxPooling取出四个元素中最大的元素,相当于取出了其中特征最鲜明的像素代表,而AveragePoolingAveragePooling均值化了四个元素,则相当于综合考量了这个局部区域的像素特征,其它框进行类似操作。可以看到特征矩阵尺寸缩小为了四分之一,且仍然保持了局部结构的相对不变性(各颜色的框位置是没变的)。这进一步降低了训练计算的开销,且通过引入采样这种带有随机性质的行为,有效地防止了过拟合。


经过以上卷积层、池化层的操作后,像素矩阵被压缩为了一个小尺寸的池化特征矩阵:
这里写图片描述
可以想象,被压缩后的池化特征矩阵仍然具有类似于图像的性质,其中的每个元素都来自于特征矩阵的对应区域,而特征矩阵中的元素又来自于原始像素矩阵的各个局部区域。因此,运用深度学习的思想,我们可以堆叠卷积-池化的模块,来让模型变“深”,具备更强的拟合能力。

第一个卷积-池化模块的输出结果是诸如轮廓,边角之类的特征信息,第二个模块在前一个模块的结果上进行进一步的特征提取,得到的便是更细微的特征元素,比如线段、弧度等等。通过数个这样的模块堆叠,将原始像素矩阵逐步拆解为很细微的特征表示,达到表示学习、理解图像的目的。


全连接层

卷积-池化模块已经完成了表示学习部分,全连接层只是充当特征组织与分类的角色。将池化层的高阶特征矩阵打平,输入到全连接层即可。在不同的问题中,按不同方式来配置卷积-池化模块(如调整卷积核大小、个数、初始化方法;池化层尺寸、步长;堆叠层数、激活函数等等),来对不同类型的特征进行提取。根据最终表示学习结果的尺寸,合理设置全连接层的层数、神经元个数,达到分类的目的。

深度学习基础笔记 (4) :卷积神经网络 CNN 《动手学深度学习》笔记——卷积神经网络 CNN(LeNet、AlexNet、VGG、NiN、GoogLeNet、ResNet、DenseNet) 阅读详情

相关推荐

卷积神经网络(CNN)学习笔记3:Matlab代码理解

近期正在学习卷积神经网络,大致的原理在之前参考前辈们经验,转载的两个笔记中已经做了简要梳理,下边就Github中的DeepLearnToolbox中的CNN的代码进行理解和实现讲解 参考代码来源:[CNN卷积神经网络的Matlab实现](https://github.com/rasmusbergpalm/DeepLearnToolbox) 网络结构图: 打开路径\tests\test_exampl

冰凝凝的专栏 2万+

机器学习之——神经网络模型

之前我们了解了神经网络模型(Nerual Network),这一次,我们来具体讨论一下神经网络模型的表达。 我们知道,神经网络模型是许多逻辑单元(Logistics Unit)按照不同的层级组织起来的网络,每一层的输出变量作为下一层的输入变量。如下图,是一个三层的神经网络,第一层为输入层(Input Layer),最后一层为输出层(Output La...

weixin_34235371的博客 843

【数据中台】数据中台架构搭建百科全书

0、前言 当前,大部分企业不再建设从源数据采集到分析应用的烟囱式系统,更倾向于数据集中采集、存储,并应用分层建设。这种方式一方面有利于应用系统的快速部署,另一方面也保证了数据的集中管理与运营,体现数据的资产、资源属性。 数据中台的出现弥补了数据开发和应用开发之间由于开发速度不匹配而出现的响应力不足等缺陷问题。 数据中台是国内学者提出的概念,起始于阿里的“大中台、小前台”概念。阿里的中台是从管理的角度出发,以中台事业部集中数据搜索,技术及产品,数据共享等多个部门的功能。其他组织或企业建设数据中台不一定需

Sunny的专栏 8405

CNN-卷积神经网络

它在一整个屏幕滑动的时候,其实会把三个通道的值都累加起来,最终只是输出一个一维矩阵。而多个卷积核(一个卷积层的卷积核数目是自己确定的)滑动之后形成的Activation Map堆叠起来,再经过一个激活函数就是一个卷积层的输出了。从左上角开始,卷积核就对应着数据的3*3的矩阵范围,然后相乘再相加得出一个值。我们是使用卷积核来提取特征的,卷积核可以说是一个矩阵。假如我们设置一个卷积核为3*3的矩阵,而我们图片为一个分辨率5*5的图片。在我们面对线性可分的数据集的时候,简单的用线性分类器即可解决分类问题。...

zhangshaozhong__的博客 639

【IC设计实战】去耦电容decap在电源完整性中的关键作用与选型策略

本文深入探讨了去耦电容(decap)在IC设计电源完整性中的核心作用。文章分析了decap如何通过提供本地电荷缓冲来抑制电源噪声与电压波动,并详细阐述了其选型与布局策略,包括MIM、MOM、MOS电容的特性对比,以及如何权衡峰值抑制与建立速度的矛盾,为设计稳定可靠的芯片电源系统提供实践指导。

weixin_29233857的博客 248

深入解析AndroidManifest.xml与device_admin.xml:打造完美DeviceOwner应用配置

本文深入解析了Android企业级开发中DeviceOwner应用的核心配置文件AndroidManifest.xml与device_admin.xml。详细阐述了如何精准声明DeviceAdminReceiver、定义管理策略,并提供了通过ADB命令进行设置与验证的实战指南,帮助开发者构建权限完整、配置正确的设备所有者应用。

ice55的博客 680

深度学习相关原理

深度学习的原理

weixin_39455125的博客 2094

用OpenPose进行单个或多个人体姿态估计

在计算机视觉中,人体姿态估计(关键点检测)是一个很常见的问题,在体育健身、动作采集、3D试衣、舆情监测等领域具有广阔的应用前景,本文要使用的检测方法就是基于OpenPose的人体姿态估计方法。 一、OpenPose简介 OpenPose人体姿态识别项目是美国卡耐基梅隆大学(CMU)基于卷积神经网络(CNN)和监督学习(SL)并以Caffe为框架开发的开源库。可以实现人体动作、面部表情、手指运动等姿...

weixin_42709563的博客 8404

各种卷积操作及其矩阵运算

前言 简单来讲,卷积是一种函数和函数产生一个新函数的数学运算,该数学运算的自变量是两个函数f, g(连续或离散都可以,,定义域之外的部分记函数值填充为0),输出为一个函数h,满足 ,或者说,就是对每个自变量t, 的h(t)值,都是g与对应​f的函数值的加权和。 1. 一维离散卷积数学表达 2. 二维离散卷积定义 3. 图像卷积 卷积核套合在图像上,对应位置相乘求和赋值给中心像素,滑动卷积核(从左到右,从上到下),依次得到新的特征图上的值。 上图展示的是 stride=1 的情形,既每次移动一个像

Nick Blog 7087

FFmpeg 部署与使用(含Docker部署)

ffmpeg 部署以及使用

weixin_38584583的博客 910

vscode中创建vue快捷键

1.安装Vetur插件(扩展里面直接搜) 2.vscode 界面里面左上角选则 文件=> 首选项=> 用户代码片段=>新建全局代码片段=>在输入框中新建名称为vue.json 3.删除里面的注释,当然你也可以留着,把下面的代码粘贴进去! { // Place your 全局 snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and // descri

Leon_940002463的博客 3207

卷积和转置卷积矩阵计算 convolution和deconvolution或者transposed_convolution

总的来说卷积计算是多对一,也就是多个input,和所有kernel进行multiply+add,通道channel方向也进行add,得到一个数字。转置卷积或者说是逆卷积,是一对多的关系,是一个input和所有kernel进行multiply,通道channel方向才进行add,得到kernel_size_width*kernel_size_height个数字​ ​即滑窗运算,卷积核kernel和Input的位置multiply然后add, K1*1 + K2*2+K3*3 = out1​Stride=2

邹九的个人博客 1577

数学建模预测模型——回归分析预测

作为预测模型的大块头,回归分析预测绝对是比较常用的预测模型的一种,下面是对该模型的学习,欢迎大家指正😊。

everything is possible,anything is OK. 1万+

CNN卷积神经网络学习笔记

最近开始从事视觉领域的研究工作,CNN(卷积神经网络)是图像处理最常用的深度学习算法,听起来比较高深的样子,但是有了之前无线通信算法的经验,理解起来也非常容易。虽然网上介绍CNN的文章很多,还是自己写一下,理解更为深刻,其中很多图用了网络上,一并表示感谢。

Tony's Blog 1219

uniapp - 解决控制台提示“同步资源失败,未得到同步资源的授权,请停止运行后重新运行,并注意手机上的授权提示”,uniApp安卓/苹果App真机运行调试显示同步资源失败,无任何授权提示且无法连接

uni-app,报错,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果安卓app,提示错误解决,HbuilderX,uniapp同步资源失败,未得到同步资源的授权,请停止运行后重新运行,并注意手机上的授权提示同步失败,安卓基座调试,没有反应,真机没有提示怎么办,如何解决这个问题,苹果ios手机,电脑模拟器运行,adb连接,连接失败,报错出错,uniapp真机运行的时候显示同步资源失败,未得到同步资源的授权,plugins里面没有tools,找不到tools,还是不行,重新打基座

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

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

[神经网络学习笔记]卷积神经网络CNN(Convolutional Neural Networks, CNN) 综述

本人刚入门神经网络,边学习边总结,参考了很多大佬的博客和论文,整理出的自己思路的笔记,供入门的同学一起参考。其中可能有理解错误的地方,望指出 参考主要文献和博客 通俗讲解什么叫卷积、池化 参考资料 -卷积神经网络研究综述-周飞燕 一、常用的深度学习模型有 深度置信网络(Deep Belief Network DBN) 层叠自动去噪编码机(Stacked Deoising Autoencodes,SDA) 卷积神经网络(Convolutional Neural Network,CNN) 二、神经元

BetterBench的博客 6526

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

CNN学习笔记

学习CNN的一些总结

u010067397的专栏 362

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

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

卷积神经网络CNN学习笔记

主要操作 卷积、非线性变换(ReLU)、池化或子采样、分类(完全连接层) 卷积 卷积的主要目的是从输入图像中提取特征。 卷积的解释:将橙色矩阵在原始图像(绿色)上以每次1个像素的速率(也称为“步幅”)移动,对于每个位置,计算两个矩阵相对元素的乘积并相加,输出一个整数并作为最终输出矩阵(粉色)的一个元素。 在卷积神经网路的术语中,这个3 × 3矩阵被称为“过滤器”或“核”或“特征探测器”,通过在图...

qq_33793792的博客 926

卷积神经网络(CNN)入门学习笔记

CNN,全称,是一种专门用来处理图片、语音、文本等结构化数据的神经网络。,一步步提取特征,最后做出判断。

dark 1675

[深度学习笔记][CNN/GCN]卷积神经网络基础

注:这是写给自己看的学习笔记,如有错误敬请指出。 1.卷积神经网络的结构 由四层构成,分别为:输入、卷积、池化、输出层。 2.卷积神经网络的形象理解 2.1卷积层的形象理解 卷积层的目的实际上是进行特征的提取。 在卷积层(convention layer)中,使用一个过滤器(kernel)去扫描一个图像,这个过滤器的参数是需要学习的。过滤器与图像进行卷积并滑动,会生成这个图像的特征映射(feature map)。 此处可以深究的问题是:如何选取合适的过滤器、如何确定过滤器的大小等。(书中.

猎人伯爵 877

python3 27.keras使用卷积神经网络(CNN)对MNIST数据集进行分类 学习笔记

文章目录前言 前言      计算机视觉系列之学习笔记主要是本人进行学习人工智能(计算机视觉方向)的代码整理。本系列所有代码是用python3编写,在平台Anaconda中运行实现,在使用代码时,默认你已经安装相关的python库,这方面不做多余的说明。本系列所涉及的所有代码和资料可在我的github上下载到,gitbub地址:https://github....

112 4267

深度学习—卷积神经网络(CNN)全笔记,附代码

K近邻;神经网络基础,线性函数,损失函数,前向传播; 卷积神经网络,卷积网络与传统网络的区别,卷积层,卷积层涉及参数,池化层,最大池化,特征图的变化;经典网络Alexnet,经典网络—Vgg经典网络—Resnet,感受野; 项目实战—基于CNN构建识别模型一 项目实战—基于CNN构建识别模型二 图像识别实战常用模块解读...

weixin_58176527的博客 2万+

CNN笔记:通俗理解卷积神经网络_cnn卷积神经网络

2012年我在北京组织过8期machine learning读书会,那时“机器学习”非常火,很多人都对其抱有巨大的热情。当我2013年再次来到北京时,有一个词似乎比“机器学习”更火,那就是“深度学习”。本博客内写过一些机器学习相关的文章,但上一篇技术文章“LDA主题模型”还是写于2014年11月份,毕竟自2015年开始创业做在线教育后,太多的杂事、琐碎事,让我一直想再写点技术性文章但每每恨时间抽不开。然由于公司在不断开机器学习、深度学习等相关的在线课程,耳濡目染中,总会顺带着学习学习。

2401_87555477的博客 1132

【CNN】卷积神经网络笔记笔记

卷积神经网络 卷积神经网络是如何进行工作的呢? 通俗来讲,就是以下的工作流程: 一、图片如何转化为像素矩阵(如何用数字来表示图片呢) 首先Image.open()来打开一幅图像,然后调用numpy中的array()函数就可以将PIL对象转换为数组对象。 img=np.array(Image.open(‘d:/lena.jpg’)) #打开图像并转化为数字矩阵 如果是RGB三通道图像,转化为...

qq_43557445的博客 1027

CNN笔记

李宏毅老师的听课笔记 https://www.youtube.com/watch?v=Ye018rCVvOo&list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J 写的很简单,主要是为了自己理解,如有不明白或者指出问题,请多指教! CNN Convolutional Neural Network ,专门用在图像上的,目的就是提取有用的特征 Tensor 维度大于2的矩阵 版本1: 没必要fully connected,对于一张图片,辨识他是啥就看部分特征就行 每一个neur

qq_43785048的博客 192

cs231 CNN笔记

cs231的CNN讲义的笔记 结构概述 常规的神经网络不适合大尺寸的图片。图大导致参数很多,造成浪费与增加过拟合的风险。 神经元的三维排列。充分利用了图像的特点,更合理的构建网络、 用来构建卷积神经网络的各种层 卷积层,池化层,全连接层 卷积层 概述和直观介绍:在没有大脑和生物意义上的神经元之类的比喻下,直观的说,网络会学习到一种滤波器,这种滤波器当见到某一类视觉特征时就...

weixin_40520563的博客 374
上一篇: 笔记(总结)-神经语言模型和词向量
下一篇: 笔记(总结)-循环神经网络
ZSYGOOOD
博客等级 码龄12年 113粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值