首页 > 其他分享 >动手学深度学习--卷积神经网络

动手学深度学习--卷积神经网络

时间:2023-10-14 15:47:58浏览次数:34  
标签:输出 -- 矩阵 卷积 神经网络 看成 我们 输入

image

from pixiv


从全连接层到卷积

现在我们给自己一个任务:用神经网络去识别区分出百万级像素的不同图片

回顾一下以前:我们是通过多层感知机来实现的,当面对一张图片的时候,我们将其看成一个像素点矩阵,然后将其从二维拉直到一维上,再通过MLP进行训练

但是我们这次的任务每张照片具有百万级像素,这意味着网络的每次输入都有一百万个维度。 即使将隐藏层维度降低到1000,这个全连接层也将有 1e6×1e3=1e9个参数。 想要训练这个模型将不可实现,因为需要有大量的GPU、分布式优化训练的经验和超乎常人的耐心。

或许我们是时候需要进行改变了



识别一张图片我们真的需要看全部的像素吗?(不用,局部性)
识别一张图片我们训练的模型对于取图片不同位置(不同像素点矩阵)处就不适用了吗?(不,平移不变性)

image


我们下面尝试用公式表示上述性质:

image

image

来自评论区的一条好评论:w_{i,j,k,l}中,i,j代表输出的点在输出矩阵中的位置,k,l代表输入点在输入的图(或者矩阵)中的位置。那么这个权重矩阵应该记录输入中的每一个点对于输出中的每一个点的影响(也就是权重)。举例来说,比如输入图是4x4的,输出图是2x2的。我需要记录输入图中(1,1), (1,2), ..., (2,1), ..., (4,4)这些所有的点对输出图(1,1)的影响,同理也需要记录这些所有点对输出图中(1,2), ...., (2,2)的影响。那么这时候对于每一组点就有4个参数:输入图的横坐标、纵坐标,输出图的横坐标、纵坐标。所以要想完全记录所有的权重,需要一个4维张量。


将上述两条性质结合起来的形象产物就是卷积核:

理解卷积核的好视频

image

f(z)与 g(x-z)中的两个参数z与x-z是否相加为x是判断是否是卷积的一个关键
在深度学习中f(z)可以看成源值,g(x-z)可以看成是对源值的权重影响,积分型号可以变成求和符合
z可以看成我们的起始点,x可以看成我们的目标点
一个f(z)g(x-z)可以表示为起始点的源值f(z)对目标点的影响大小是g(x-z),所以影响值是:f(z)g(x-z)


进一步到二维情况:

image

这里起始点为(x-1,y-1),目标点是(x,y)
那么g函数的参数是(x-(x-1),y-(y-1))=(1,1)
然后通过我们的卷积核可以知道对应的g(1,1)的值

image

卷积核工作过程图

标签:输出,--,矩阵,卷积,神经网络,看成,我们,输入
From: https://www.cnblogs.com/cilinmengye/p/17764227.html

相关文章

  • 四、ts高级类型
    四、ts高级类型今天也是一个小透明关注IP属地:青海0.1032022.03.0722:50:41字数2,354阅读2,398主要:class类、类型兼容性、交叉类型、泛型和keyof、索引签名类型和索引查询类型、映射类型1、class类ts全面支持es6的class关键字,并为其添加了类型注解和其他语法(如:可见......
  • 横道图
     问题:用横道显示数据解决:用时分别列在E列和H列,需要转成一列N行的结构,使用以下公式:INDIRECT("r"&INT(ROW(A4)/2)*2&"c"&MOD(ROW(A2),2)*3+5,)Row(A4)/2以后取整,得出2、2、3、3……这样的重复序列数,再乘以2就是每个用时对应的行号4、4、6、6、8、8……Mod(Row(A2),......
  • Mac上使用jenv管理多个java版本
    Mac上可以使用Homebrew安装jenvbrewinstalljenv配置jenv的环境变量,向~/.profile(bash用户)或者~/.zshrc(zsh用户)文件中添加如下代码exportPATH="$HOME/.jenv/bin:$PATH"eval"$(jenvinit-)"使用如下命令添加java_home的路径到jenvjenvadd/Library/Java/JavaVirtual......
  • TS第二个参数类型是根据第一个参数类型
    interfaceperson{name:stringid:numbersex:boolean}func1<Textendskeyofperson,Kextendsperson>(a:T,b:K[T]){}简化一下func1<Textendskeyofperson>(a:T,b:person[T]){}调用方法changeNa......
  • 考场(CSP模拟55联测17)
    T1签到题?也许存在性质:若一个点作为中点,则它永远不会被换?目测挺对,因为它(设为\(x\))前面的数在换过以后会比它小,而。。然后就挺错的。假了。不对不对,前面的数在换过以后会比它小,若想让\(x\)被换,那么一定要保证前面的数比\(x\)大,一定不可能,所以真了!!!发现策略,若一个序列可以......
  • Binary Tree Postorder Traversal
    SourceGivenabinarytree,returnthepostordertraversalofitsnodes'values.ExampleGivenbinarytree{1,#,2,3},1\2/3return[3,2,1].ChallengeCanyoudoitwithoutrecursion?题解1-递归首先使用递归便于理解。C++-Tra......
  • 数据库期末考试试卷
    数据库期末考试试卷一、填空题(每题5分,共25分)在关系型数据库中,数据按照______的形式进行组织和存储。在SQL语言中,用于从数据库表中查询数据的关键字是______。在关系型数据库中,用于确保数据的一致性和完整性的约束条件包括主键约束、外键约束和______约束。在数据库的ACID特......
  • 在全基因组选择中,基因组数据是如何输入进神经网络中的
    在全基因组选择(GS)中,通常使用基因分型数据,这些数据来源于一个组织或个体的DNA。这些数据通常是由高通量测序或基因分型技术得到的。为了将这些数据用作神经网络的输入,我们需要将它们转换为合适的格式。以下是这一过程的详细步骤:基因分型数据:通常,基因分型数据表示为二进制或三类......
  • C#结构体和类的区别
    C#结构体和类的区别Postedon 2015-08-0917:33  greyhh 阅读(2404) 评论(0)  编辑  收藏  举报结构体和类的区别1.值类型与引用类型 结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int对应System.int32结构,通过使用结构可以创建更多的......
  • Windows 性能计数器 命令 任务管理器 命令
    Windows性能计数器是一个Windows系统内置的监视工具,可以显示系统的运行状况,包括CPU使用率、内存使用情况、网络吞吐量、磁盘I/O活动等。以下是几个常用的性能计数器相关命令:perfmon:打开性能监视器,可以创建和管理监视器,查看性能数据和日志。logman:创建和管理性能日志文件......