您好,欢迎访问三七文档
神经网络中的矩阵向量相关操作1.数与向量相乘数k与向量a=(a,b,c)相乘,结果kxa=(ka,kb,kc)2.向量与向量相乘设向量a=(x1,x2,x3),b=(y1,y2,y3);I.点乘(DotProduct)\内积;结果为标量(Scalar);a·b=x1y1+x2y2+x3y3II.叉乘(crossproduct)\外积;结果是个向量axb=(x1y1,x2y2,x3y3)III.加法;两个向量相加,结果仍然是一个向量a+b=(x1+y1,x2+y2,x3+y3)矩阵与向量相乘设矩阵A=𝑎𝑏𝑐𝑑,向量a=(x,y)1.矩阵与向量乘法,结果为向量Axa=(ax+by,cx+dy)2.矩阵A右乘向量a,则a被作为行向量处理axA=(ax+cy,bx+cy)3.矩阵A左,右都乘a得出一个标量axAxa=x(ax+cy)+y(bx+cy)矩阵与矩阵相乘矩阵Am,n=𝑎𝑏𝑐𝑑矩阵Bj,k=1234AB=1𝑎+3𝑏2𝑎+4𝑏1𝑐+3𝑑3𝑏+4𝑑C=AB=123456142536=1x1+2x2+3x31x4+2x5+3x64x1+5x2+6x34x4+5x5+6x6注意:当矩阵A的列数等于矩阵B的行数时,A与B可以相乘。1.矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。2.乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。参考文献向量和矩阵的乘法矩阵乘法C或C++中BLAS(BasicLinearAlgebraSubprograms)库整个库可以分为三个部分1.Level1向量与向量操作𝑥↔y,𝑥←𝑦,𝑦←𝛼𝑥+𝑦,𝑑𝑜𝑡←𝑥𝑇𝑦,𝑑𝑜𝑡←𝛼+𝑥𝑇𝑦,𝑥22.Level2矩阵与向量操作𝑦←𝛼𝐴𝑥+𝛽𝑦,𝑥←𝐴𝑥,𝑥←𝐴−1𝑥,𝐴←𝛼𝑥𝑦𝑇+𝐴,𝐴←𝛼𝑥𝑥𝑇+𝐴3.Level3矩阵与矩阵操作𝐶←𝛼𝐴𝐵+𝛽𝐶,𝐶←𝛼𝐴𝐴𝑇+𝛽𝐵,𝐵←𝛼𝑜𝑝𝐴𝐵BLAS部分名词解释A,B,C-矩阵(matrices)D,DL,DR-对角矩阵(diagonalmatrices)H-Householder矩阵,行列式=1op(A)-表示A,或者AT或者AHtranspose-表示ATu,v,w,x,y.x-向量(vectors)方法名前缀1.S-单精度(float)2.D-双精度(doubleprecision)3.C-复数(complex)4.Z-双精度复数(complex*16或者doublecomplex)BLAS方法名关键字GB-一般带状矩阵(generalband)GE-普通矩阵(general)HB-(complex)HermitianbandHE-(complex)Hermitian埃尔米特矩阵(厄米矩阵/自伴随矩阵)HP-(complex)Hermitian,packedstorage压缩储存Hermitian矩阵SB-(real)symmetricband对称带状矩阵SP-symmetric,packedstorage对称压缩存储矩阵SY-symmetric对称矩阵TB-triangularband三角带状矩阵TP-triangular,packedstorage三角压缩矩阵TR-triangular三角或者拟三角矩阵US-unstructuredsparse杂乱稀疏矩阵BLAS方法名举例Dgemv-D:双精度,GE:普通矩阵MV:矩阵乘向量,双精度普通的矩阵乘向量SGBMV–S:单精度,GB:带状矩阵MV:矩阵与向量,单精度带状矩阵与向量Sger-S:单精度,GE:普通矩阵,单精度普通矩阵Dgemm–D:双精度,GE:普通矩阵,MM:矩阵与矩阵,双精度普通矩阵与矩阵操作参考文档1.://深度网络中的矩阵1.权重使用矩阵表示W2→1=ax𝑎𝑦𝑏𝑥𝑏𝑦𝑐𝑥𝑐𝑦矩阵表示第二层所有节点的权重,行表示第几个节点,列表是上一层第几个节点.W3→2=dadbd𝑐B2=𝑏1𝑏2𝑏3B3=𝑏41.对于输入y=wx𝑛𝑘=0+b就可以表示成矩阵的形式2.ax𝑎𝑦𝑏𝑥𝑏𝑦𝑐𝑥c𝑦𝑥1𝑥2+𝑏1𝑏2b3=ax𝑥1+𝑎𝑦𝑥2𝑏𝑥𝑥1+𝑏𝑦𝑥2𝑐𝑥𝑥1+𝑐𝑦𝑥2+𝑏1𝑏2𝑏3=ax𝑥1+𝑎𝑦𝑥2+𝑏1𝑏𝑥𝑥1+𝑏𝑦𝑥2+𝑏2𝑐𝑥𝑥1+𝑐𝑦𝑥2+𝑏3acbx2x1d123梯度下降求解过程1.梯度下降权重和误差更新公式2.梯度下降反向传播方程z=wx+b,▽aC=(aL-y)a-输出值,y–期望值梯度下降中的矩阵1.假设网络层为2,4,32.计算输出层𝛿=(0.90.90.9-1.01.01.0)·𝑧‘1𝑧’2𝑧‘3其中z’=𝜎’(wx+b),输出层b=𝛿=𝛿’1𝛿‘2𝛿’3=3*1矩阵3.输出层权重w=𝛿‘1𝛿’2𝛿‘3*𝜎a𝜎𝑏𝜎𝑐𝜎dT=3*4矩阵4.输出层上一层𝛿𝑙=(𝑤𝑙+1𝑇𝛿𝑙+1)点乘𝜎′𝑧𝑙=w(4*3)(3*1)·z′𝑎𝑧′𝑏𝑧′𝑐𝑧′𝑑=4x1矩阵5.输出层上一层wl=𝛿′𝑎𝛿′𝑏𝛿′𝑐𝛿′𝑑*𝜎𝑥1𝜎𝑥2T=4*2矩阵x2x1abcdy1y2y3BLAS实现库1.OpenBLAS:继任GotoBLAS的开源BLAS的实现,主要由中国科学院软件研究所并行软件与计算科学实验室进行开发。2.IntelMKL:Intel核心数学库,支持Pentium,IntelCore与ItaniumCPU系列。实现平台包括Linux,Windows及OSX3.GSL:GNU科学数值库(GNUScientificLibrary)包含了GNU下的多平台C语言实现。4.cuBLAS:NVIDIACUDASDK包含了BLAS功能,通过GPU进行计算。5.Cudnn:NVIDIACUDA专门针对深度网络开发的GPU加速工具包。向Caffe,TensorFlow,Theano,Torch这些开源框架都采用了cudnn加速。Caffe研究1.Caffe的全称应该是ConvolutionalArchitectureforFastFeatureEmbedding,它是一个清晰、高效的深度学习框架,它是开源的,核心语言是C++,它支持命令行、Python和Matlab接口,它既可以在CPU上运行也可以在GPU上运行。2.Caffe的设计:所有的计算都是以层的形式表示的,层做的事情就是输入一些数据,然后输出计算之后的结果。比如说卷积,就是输入一个图像,然后和这一层的参数(filter)做卷积,然后输出卷积的结果。3.Caffe的优点:模块化、表示和实现分离、测试覆盖、Python和Matlab接口、完整的文档等等。参考资料:1.Caffe简介Caffe源码TensorFlow源码2.Caffe与TensorFlow比较3.各种算法比较
本文标题:神经网络中的矩阵
链接地址:https://www.777doc.com/doc-4258137 .html