关键点:

1、关于filter正交

将一层中的一个$k \times k \times c$的卷积核展开为$k * k * c$的向量,表示为$f$。一层中有$J_{\ell}$个卷积核,$\boldsymbol{W}_{\ell}$为一个矩阵,矩阵的行 为卷积核展开的向量,行数为卷积核数$J_{\ell}$。

首先对于矩阵$\boldsymbol{W}_{\ell}$做标准化。

\begin{equation}
\hat{\boldsymbol{W}}_{\ell}=\boldsymbol{W}_{\ell} /\left\|\boldsymbol{W}_{\ell}\right\|
\end{equation}

一层之中卷积核间的正交性用$O_{\ell}^{f}$表示。

\begin{equation}
\boldsymbol{P}_{\ell}=\left|\hat{\boldsymbol{W}}_{\ell} \times \hat{\boldsymbol{W}}_{\ell}^{T}-I\right|
\end{equation}

\begin{equation}
O_{\ell}^{f}=\frac{\sum P_{\ell}[f]}{J_{\ell}}
\end{equation}

$\boldsymbol{P}_{\ell}$是大小为$J_{\ell} \times J_{\ell}$的矩阵,$P[i]$表示矩阵$\boldsymbol{P}_{\ell}$的$i^{t h}$行。

作者认为如果$i^{t h}$行对应的卷积核与其他的卷积核正交,那么该行的sum值应该是最小的。然后按照这个标准在层内对filter进行排序。

因为文中,作者先去构建了一个两层的网络,针对于CIFAR-10数据集,drop filter之后发现后面的层drop filter对于最后的准确度的影响相对来说要更小,所以作者就剪去更深层的filter。

2、重新初始化权重

作者在剪去不重要的权重之后,继承权重进行训练,进行一定epoch之后,将剪去的卷积核再拿来重新初始化后添加进网络,但是问题的关键在于如何进行初始化的,如果随便的进行初始化会不会有效果,作者是将新添加进来的卷积核和未添加卷积核之前的网络卷积核正交的方式来初始化的权重数据。

分析:

在github上找到了别人实现的工程:https://github.com/siahuat0727/RePr

还有相对应的复现过程记录博客:https://siahuat0727.github.io/2019/03/17/repr/

复现者有些思考方向是值得借鉴的:

1、复现者开始复现后结果并没有论文中这么好。然后开始对比自己的loss曲线和论文中的loss曲线之间的差别,发现自己复现的einitialize 之后train精度特别明显的回升,而论文中的曲线回升明显并且精度值比较高,所以作者就怀疑是不是pytorch中数据增强的问题,data augmentation,torchvision.transforms.RandomCrop

2、复现者不使用data augmentation,发现效果还是不好,这时候复现者没有就此放弃,而是做了其他的尝试,调低了学习率,发现论文中的方法的却是有效的。

3、这时候作者重新恢复使用data augmentation,使用现在的学习率,但是没有使用论文中的方法,发现data augmentation的效果更好。

总而言之,复现还存在问题。

RePr: Improved Training of Convolutional Filters的更多相关文章

  1. 论文阅读笔记六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

    论文原址:https://arxiv.org/abs/1811.07275 摘要 一个训练好的网络模型由于其模型捕捉的特征中存在大量的重叠,可以在不过多的降低其性能的条件下进行压缩剪枝.一些skip/ ...

  2. Deep Learning 19_深度学习UFLDL教程:Convolutional Neural Network_Exercise(斯坦福大学深度学习教程)

    理论知识:Optimization: Stochastic Gradient Descent和Convolutional Neural Network CNN卷积神经网络推导和实现.Deep lear ...

  3. [转] Understanding Convolutional Neural Networks for NLP

    http://www.wildml.com/2015/11/understanding-convolutional-neural-networks-for-nlp/ 讲CNN以及其在NLP的应用,非常 ...

  4. (转)ResNet, AlexNet, VGG, Inception: Understanding various architectures of Convolutional Networks

    ResNet, AlexNet, VGG, Inception: Understanding various architectures of Convolutional Networks by KO ...

  5. (zhuan) Building Convolutional Neural Networks with Tensorflow

    Ahmet Taspinar Home About Contact Building Convolutional Neural Networks with Tensorflow Posted on a ...

  6. (zhuan) Using convolutional neural nets to detect facial keypoints tutorial

    Using convolutional neural nets to detect facial keypoints tutorial   this blog from: http://danieln ...

  7. [转]An Intuitive Explanation of Convolutional Neural Networks

    An Intuitive Explanation of Convolutional Neural Networks https://ujjwalkarn.me/2016/08/11/intuitive ...

  8. Understanding Convolutional Neural Networks for NLP

    When we hear about Convolutional Neural Network (CNNs), we typically think of Computer Vision. CNNs ...

  9. 卷积神经网络LeNet Convolutional Neural Networks (LeNet)

    Note This section assumes the reader has already read through Classifying MNIST digits using Logisti ...

随机推荐

  1. java多线程探究

    本文主要是一些线程理论性的知识,随后将贴出研究的源码,包含线程池,锁,线程组等简单的demo,欢迎大家下载1.进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程 ...

  2. 浅谈Linux文件与目录权限

    作为一个程序员,在工作的过程中或多或少都会接触都Linux,那么对于权限这块肯定有所了解,今天有空想谈谈觉得比较绕的权限问题,即文件权限与目录权限 1.文件权限,对于文件权限这个是比较简单的,也很容易 ...

  3. jquery.uploadify上传插件HTML5版中文api使用说明

    插件官网文档:http://www.uploadify.com/documentation/ H5版下载地址:https://download.csdn.net/download/u010075697 ...

  4. Python的伪造数据生成器:Faker

    我们在开发中常常需要利用一些假数据来做测试,这种时候就可以使用 Faker 来伪造数据从而用来测试. Faker 是一个可以让你生成伪造数据的Python包.当你需要初始化数据库,创建美观的XML文档 ...

  5. 2018-2019-2 20165316 《网络对抗技术》 Exp6 信息搜集与漏洞扫描

    2018-2019-2 20165316 <网络对抗技术> Exp6 信息搜集与漏洞扫描 1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 2.实践内容 (1)各种搜索技巧的应 ...

  6. clean exit - waiting for changes before restart

    在使用nodemon的时候,针对于同一个文件一次使用还好,当多次使用的时候就会出现这样的情况: 解决办法: nodemon clean exit 原因: 可能是因为缓存造成的:

  7. psql 存储过程

    --添加人员和虹膜注册信息 CREATE OR REPLACE FUNCTION AddPersonInfoAndIrisEnrollInfo(personName character, workSn ...

  8. Josephina and RPG HDU - 4800

    A role-playing game (RPG and sometimes roleplaying game) is a game in which players assume the roles ...

  9. 关于pandas 调用mongodb出Memory error错误

    其实就是内存不够了,我加载的数据是800多万,数据量太大出错下面试错误提示 C:\Users\souwayai\Miniconda3\python.exe D:/www/use_pandas/pd7. ...

  10. 硬件笔记之MacMini开启HiDPI

    0x00 概述 先科普一下,有关retina和HiDPI那点事 ,Macmini在2k显示器的显示太小了,看起来费眼,没办法,苹果原生HiDPI是支持4k显示器的,所以以后买显示器,直接买4k的一步到 ...