深度学习全连接层
深度学习全连接层本篇文章将讲述关于全连接层的一些基本概念。首先将完全连接的层视为具有以下属性的黑匣子:在正向传播上1.具有3个输入(输入信号,权重,偏置)2.具有1个输出,关于反向传播1.具有1个输入(dout),其大小与输出相同。2.具有3个(dx,dw,db)输出,其大小与输入相同。Input:4DTer&orH<DeplhxNC=Hx'AkDep:hiheigit,.Wd:hdeplh|N:Baxhsize(NumberofimagesmbstehM:MjiirbErrfOjtuxiHicdenneurors'-DuringFrv岗rnpropa'galbnThei叩Ld'11be'eshEped忙NDMatrixthendotprcdjcIwthweick(D.MCuringjackp-opacaltn:Algradienthave:h-zsatedimenEicnasrt*sorgnalinpLtsFullyConnezledLaye-ICscKefor3a-3kproc:=forw.=rd:rpLtIhEigh;tEsfdKj.cw.tl二zackuard(cout>计算图的观点为了发现每个输入如何影响输出(反向传播),最好将算法表示为计算图:到目前为止,所有示例都只处理输入中的单个兀素,但是通常:一次我们只处理p个以上的示例。例如,在GPU上通常同时具有256张图像的批处理。诀窍是将输入信号表示为2d矩阵NxD;,其中N是批处理大小D是输入信号的大小。因此,如果您考虑每个数字为28x28x1(灰度)的CIFAR数据集,则图像D为784,因此如果我们在同一批次上有10个数字,则输入为10x784。为了便于讨论,让我们考虑先前的样本,其中向量X表示为,如果我们想拥有一批4个元素,我们将拥有:2iajnpiE4边担吨同”在这种情况下,必须以支持该矩阵乘法的方式表示W,因此根据其创建方式,可能需要对其进行转置。叱1L晦继续向前传播将计算为111it'nibls*职册1,;$曲71咸成2jampfs2北女盘皿庄卫11il11222)+加豁职比2切昶血礙q13出231sfimplei见理珂回02sGjrj血Lsampley2sGjr.pl.201samfayisGJT.:血3这里要注意的一点是,该偏置已重复了4次以适应乘积X.W,在这种情况下将生成矩阵4x2。在matlab上,命令“repmat”完成了这项工作。在python上,它会自动执行。使用符号引擎在转到实现之前,最好先验证在Matlab或Python(符号)符号引擎上的操作。在手动编码功能之前,这将有助于可视化和探索结果。Matlab上的符号向后传播现在我们还要确认反向传播公式。在Matlab上观察将表达式转换为的函数“latex”:输入张量我们的库将处理图像,并且大多数时候我们将同时处理数百个图像的矩阵运算。因此,我们必须找到一种表示它们的方法,这里我们将一批图像表示为4d张量或3d矩阵的数组。在下面,我们有一批4张RGB图片(宽度:160,高度:120)。我们将它们加载到matlab/python上,并将它们组织成一个4d矩阵:观察到在matlab中图像变成了120x160x3的矩阵。我们的张量将是120x160x3x4,在Python上,将图像存储在张量上之前,我们先进行转置,将图像120x160x3转换为3x120x160,然后存储在张量4x3x120x160上。VariableexpbrerNameTTypeSizeValueairplaneuint8(12D.160,3)array(43,B4,146±48,胆,146±cat2uint8(12D.160,3)arrant27r53,54|±I込企55,cattrarsuint8(3,120,J60jarray(27,26,25.46,45,49P2时26(25.53(.doguint8(12D.160,3)arra/d:32L,198f82.122,296,78±duckuint8(12D.160,3)array(72.BS,40,I忆33,40binput_temsoRfloat64(13P120,160)arra/|:27.r26.,25r.r4645.H49J.2S.r26.ObjectinspecterVaritbeexplorerFileexp.orerPrcfikrIPythonconsole飞田Corsole14aj0/AXn94:fromscipy.niscinocrtinreadn35:cat=iireadf/home/leD/PLctures/Ca:.jpg'):.:doc=imreadf/home/1cd/PLctures/Dog.jpg');.:duck=inread(1/home/lec/Pictjrei/Duzk.jpg);.:airplane=inread('/hoii&/lo/Ricturei/ALrp'.ane.jpg')n96:inputtensor=npzeros(':4,3,120,1C6)n97:cettrans=cat.trairspoEet(2h6r1In91:irput_tefisorOt:,:=cat.transaoseUS,0hll).:input_tens&rlt:,:,:=dog.transDoseU2p0h11).:input_tens&r2t:,:,:=duck“釧枫摘门,&pD)