PCANet中PCA算法为什么没有起到降维的作用?

最近在研究深度学习中的PCANet,这是由国内深度学习方面的一些技术大牛提出的一个简洁的深度学习框架,然后在调试运行源代码的时候发现一个有趣问题,就是其中的PCA算法并没有对图片矩阵起到降维的作用。

  举个例子,假设我们已经训练好了PCANet的滤波器矩阵,我们的输入图像设置为64*64,经过PCANet的映射之后(核心就是主成分映射),输出的矩阵仍为64*64,如图:

 

   其中PCA_Output函数就是PCA映射操作,但为什么这里的PCA没有降维的作用呢?研究PCA_Output函数的内部就会发现,其PCA映射过程是一个“先升维再降维”的过程。首先,通过im2col_mean_removal()函数对图像矩阵进行升维操作:

  可见在im2col_mean_removal()处理之前,图像的尺寸为70*70(对原图像进行边缘补零的结果,以保证映射之后图片尺寸相同),经过升维后变成了49*4096,明显维数提高了不少,至于im2col_mean_removal()函数的作用,和im2colstep()函数作用基本一样,只是多了一个去均值的操作。完成升维之后,接下来就开始通过主成分映射对目标进行降维操作了:

  注意这里变量V代表已经训练好的滤波器核,尺寸为49*8,则V(:,j)尺寸为49*1,与升维后的im(49*4096)进行转置向乘后得到的映射结果应为1*4096,再经过reshape函数正好能够再转换为64*64的矩阵,这就是PCA滤波器的一个输出。

  至此,问题就变得明朗了,PCANet中PCA同样进行了降维,只不过是先通过块向量化的方式对图像进行了升维,然后再用PCA映射进行降维,两者相互抵消,从而造成了一种“不升不降”的假象。不过这里对PCANet的知识介绍得不够详细,我会抓时间把代码整理注释一下,然后与大家分享。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值