全连接层计算分解

1*1卷积和全连接层的区别

1.全连接层

全连接层的输入是一维数组,多维数组需先进行Flatten进行一维化处理,然后连接全连接层。全连接层的每一个结点都与上一层的所有结点相连,用来把前边提取到的特征综合起来。由于其全相连的特性,一般全连接层的参数也是最多的。全连接图结构如下。

全连接层的图结构

其中,x1、x2、x3为全连接层的输入,a1、a2、a3为输出,有在这里插入图片描述

全连接层参数计算

权值参数=输入一维数组大小*全连接层输出结点数
偏置参数b=全连接层输出结点数

eg:
输入有[5044]个神经元结点,输出有500个结点,则一共需要5044*500=400000个权值参数W和500个偏置参数b

卷积和全连接层

个人感觉,卷积跟全连接都是一个点乘的操作,区别在于卷积是作用在一个局部的区域,而全连接是对于整个输入而言,那么只要把卷积作用的区域扩大为整个输入,那就变成全连接了,我就不给出形式化定义了。所以我们只需要把卷积核变成跟输入的一个map的大小一样就可以了,这样的话就相当于使得卷积跟全连接层的参数一样多。
eg:输入是224x224x3 的图像,假设经过变换之后最后一层是[7x7x512]的,那么传统的方法应该将其展平成为一个7x7x512长度的一层,然后做全连接层,假设全连接层为4096×1000层的(假设有1000个分类结果)。 那么用1×1卷积核怎么做呢,因为1×1卷积核相当于在不同channel之间做线性变换,所以:

先选择7×7的卷积核,输出层特征层数为4096层,这样得到一个[1×1×4096]层的
然后再选择用1×1卷积核,输出层数为1000层,这样得到一个[1×1×1000]层这样就搞定了。

SVD(Singular Value Decomposition,奇异值分解分解加速全连接层计算指的是一种优化方法,用于减少全连接层计算量和参数数量,从而提高计算效率和模型的训练速度。 在深度学习中,全连接层通常是指将前一层的输出与当前层的每个神经元都连接起来的层。全连接层的参数数量很大,对于大规模的网络,全连接层计算和存储开销非常高。 为了减少全连接层计算量,可以使用SVD分解全连接层的权重矩阵进行近似表示。SVD分解一个矩阵分解为三个矩阵的乘积:U、S和V。其中,U和V是正交矩阵,S是对角矩阵,对角线上的元素称为奇异值。通过保留奇异值较大的部分,可以近似地表示原始权重矩阵。 具体来说,在SVD分解中,可以将全连接层的权重矩阵表示为 U * S * V^T 的形式,其中 U 和 V 是正交矩阵,S 是对角矩阵。通过保留 S 中奇异值较大的部分,并截断 U 和 V 的列数,可以减少全连接层计算量和参数数量。 这种方法的优势在于,通过SVD分解,可以获得一个较低秩的近似权重矩阵,从而减少计算量和存储开销。同时,减少参数数量还有助于缓解过拟合问题,并提高模型的泛化能力。 总之,SVD分解加速全连接层计算是一种通过对权重矩阵进行近似表示来减少计算量和参数数量的优化方法。通过保留奇异值较大的部分,并截断正交矩阵的列数,可以有效地提高计算效率和模型的训练速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值