深度学习
文章平均质量分 75
zxbinggo
这个作者很懒,什么都没留下…
展开
-
tensorflow量化代码实现和实验
tensorflow量化代码实现和实验tensorflow量化代码1.构建float graph按照tensorflow定义网络的方式定义网络结构,例如:batch_norm_params = {'is_training': is_training, 'center': True, 'scale': True,'epsilon':2e-5} with slim.arg_scope([slim.conv2d], padding='SAME',原创 2020-05-09 10:15:18 · 600 阅读 · 0 评论 -
模型剪枝综述与心得
接触剪枝是最近一段时间的事情,为了全面的系统的学习一下剪枝,笔者做了个论文综述。从2016年的韩松的deep compression 到最新的彩票假设,我主要是将剪枝可以分为三个大类。分别是不需要数据参与的硬剪枝,带数据参与训练的软剪枝,以及直接搜索结构的NAS。一:硬剪枝这类的剪枝算法通常从模型本身的参数出发,寻找或者设计出合适的统计量来表明连接的重要性。通过对重要性的排序等算法,...原创 2019-12-03 13:59:56 · 3345 阅读 · 0 评论 -
residual attention 论文阅读以及复现
目录论文理解attention 机制最初是出现在翻译领域的,之后逐渐应用到检测和识别上的。总的来说,我觉得attention就是对提取的特征进行加权,进行提升重要特征忽略次要特征的作用。在这个本质作用上,我觉得和SEnet的目的是相似的,只是提纯的手段不一样。论文:Residual Attention Network for Image Classificatio论文理解总的...原创 2018-10-10 09:54:55 · 1936 阅读 · 2 评论 -
Detail-Preserving Pooling in Deep Networks阅读
理解首先,主要讲下对文章的主要理解。简而言之,这篇文章目的是保留图像细节,拒绝最大或者平均池化的简单粗暴操作,可以自适应的学习的加权型池化。文章借鉴的思想是DDIP。综述池化的作用:降低参数量,扩大感受野,增强不变性。目前常用的池化:最大,平均,带步长的卷积。等等。最大池化是选择领域内最大的,平均是对领域统一的贡献。而strided conv则是简单选择一个节点作为池化后的节点。文章内...原创 2018-10-31 11:03:15 · 1125 阅读 · 0 评论 -
mxnet 数据接口mx.io.ImageRecordIter中的缓存
首先。问题描述:mx.io.ImageRecordIte获取数据的接口是next()。假如用一个循环不断将获取的数据压入一个list容器中,那么你会发现一个奇怪的现象。在几个步骤之后,list中的内容从前向后会依次开始改变。代码表示: for batch in range(100): data_train = next(train_iter) ba...原创 2018-11-02 15:38:30 · 2044 阅读 · 2 评论 -
《Bag of Tricks for Image Classification with Convolutional Neural Networks》阅读笔记--调参trick
目录1文章思想:2 摘要3 baseline4 高效的训练4.1 大批量的训练4.2 低精度训练5 模型调整6 训练过程的改进6.1 余弦学习率下降6.2 标签平滑6.3 知识蒸馏6.4 混合训练7 迁移学习的结果证明实验1文章思想:总的来说,这篇文章是一篇实用性极强的文章,也是需要亲自调试才能明白其好处的文章。这篇文章没有干涩的理论研究...原创 2018-12-12 15:46:13 · 817 阅读 · 1 评论 -
softmax loss函数和求导以及数值稳定性讨论
转:https://zhuanlan.zhihu.com/p/27223959目录背景与定义导数softmax的计算与数值稳定性Loss function对数似然函数交叉熵Loss function求导Softmax函数背景与定义在Logistic regression二分类问题中,我们可以使用sigmoid函数将输入映射到区间中,从而得到属于某个类...转载 2018-12-26 14:12:12 · 1679 阅读 · 0 评论 -
《deep mutual learning》论文阅读和实验
目录1 论文阅读1.1 原文理解主旨:实现方法:算法流程:1.2 训练步骤2 实验3 实验代码步骤(伪代码)1 论文阅读1.1 原文理解主旨:从teacher-student知识蒸馏出发,提出来一种新的蒸馏方法叫相互学习。相互学习与知识蒸馏的方法的区别:知识蒸馏需要一个大的pre-trained网络带动小网络的学习。而相互学习是小网络集合直...原创 2018-12-18 09:11:15 · 3196 阅读 · 15 评论 -
CNN模型几个常见层的复杂度分析-FLOPs
FLOPs:是floating point operations的缩写,表示浮点运算数,理解为计算量。用来衡量模型的复杂度。目录1 卷积:解读:参数量:参考图:计算量:2 全连接3 Dw-pw卷积解读:参数量:示意图:以下是自己整理推理的几个常见层的FLOPs计算:1 卷积:解读:三维卷积的形式,对输入通道为Cin的输入,用Cout大小为...原创 2019-04-26 10:34:35 · 5310 阅读 · 0 评论 -
《Tuning the architecture, not just the weight》论文阅读
目录文章主旨:Introduction:METHOD流程细节1 扩增的学生网络2 裁剪学生网络3 loss函数4 模型剪枝文章主旨:利用pre-trained网络的block作为基础block和少量的task-specific的layer层,组成新的适合新任务的网络。新网络的特点是,适合target data的复杂度,保证精度。对新的网络进行组合分类损...原创 2019-07-05 09:35:34 · 354 阅读 · 0 评论 -
模型蒸馏概述和实验
目录1 杂谈2 蒸馏方法概述。2.1 基于最后输出层的蒸馏2.2 基于中间结果层的蒸馏2.3 基于元学习的蒸馏3 实验结果和参考代码1 杂谈鉴于目前算法和数据的瓶颈,我最近研究了一下模型蒸馏,目的是通过大模型能够带动我需要的小模型。目前的模型蒸馏这方面的研究已经不少了,专业术语上也有了KD(Knowl-edge Distillation (KD)),know...原创 2019-09-11 11:05:56 · 7522 阅读 · 3 评论 -
mxnet 数据部分接口解读和可视化
(一)数据读取mxnet 参考api 文档:http://mxnet.incubator.apache.org/api/python/io/io.html这里主要用到两个函数接口:io.ImageRecordIter以及recordio.MXIndexedRecordIO。io.ImageRecordIter:函数解释:从rec文件中读取数据,根据batchSize的大小读取数据。...原创 2018-09-26 10:17:54 · 1250 阅读 · 0 评论 -
im2rec.py的解读以及python高级编程的一些知识点
1.mxnet 的im2rec.py注释# Licensed to the Apache Software Foundation (ASF) under one# or more contributor license agreements. See the NOTICE file# distributed with this work for additional informat...原创 2018-09-07 10:13:04 · 1364 阅读 · 4 评论 -
BatchSize 的选择
全批次(蓝色)如果数据集比较小我们就采用全数据集。全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。注:对于大的数据集我们不能使用全批次,因为会得到更差的结果。迷你批次(绿色)选择一个适中的Batch_Size 值。就是说我们选定一个batch的大小后,将会以batch的大小将数据输入深度学习的网络中,然后计算这个batch的所有样本的平均损失,即代价函数是所有样本的平均。...翻译 2018-07-04 09:28:54 · 2251 阅读 · 0 评论 -
深度学习Loss 种类汇总以及讨论
(1)首先是从大的角度来说,度量loss的主要为两种方法。一种是从欧式距离计算,以L2-norm为主,一种是近来的另辟蹊径的转换到角度领域,主要从余弦和夹角这两个在我看来有异曲同工之效的角度。但是,总的Loss改进的出发点从之前的可分到现在的最大化类间最小化类内这个目标。遍观出现的Loss种类,我觉得可以分为两大类。一类以样本本身为一个优化手段,一类以改进softmax的margin种类为优化方法...原创 2018-07-04 09:24:07 · 10877 阅读 · 0 评论 -
MxNet 错误--显存不足(Failed to find any forward convolution algorithm.|| Out of memory)
前提:用144*128 的数据训练mobileNet原始模型。训练的时候超参数的不同,出现的几个错误。设备:GTX 1080 8G显存。错误出现情况:1.out of memory超参数设置:batch_size=256 gpu=0,1或者batch_size=128 gpu=0,12.Failed to find any forward convol...原创 2018-07-18 15:01:12 · 3767 阅读 · 0 评论 -
mxnet FGSM 对抗样本生成
感慨:初学mxnet 和 python ,写出来一个FGSM真的坑太多了。FGSM的原理很简单,利用输入层的梯度作为扰动,改变输入图像,从而达到肉眼看不到区别的前提下能够使得神经网络错分。原理博客:https://blog.csdn.net/u014038273/article/details/78773515mxnet example版本,不定向生成。(ps:这个我觉得是有点问...原创 2018-08-01 19:34:30 · 1727 阅读 · 13 评论 -
insightFace 复现以及问题汇总
首先,insightface的代码是基于python 2.7的,所以3.0的版本会有很多问题,以下是问题汇总。使用insightFace见https://zhuanlan.zhihu.com/p/33750684问题汇总:1.没有装easydict:2.nameError:python3中没有xrange,将所有的xrange替换为range.3.UnicodeDecodeEr...原创 2018-08-01 19:35:17 · 3671 阅读 · 14 评论 -
mxnet dropout 层阅读和测试
(1)mxnet 测试dropout的层函数:mxnet.symbol.Dropout(data=None, p=_Null, mode=_Null, axes=_Null, name=None, attr=None, out=None, **kwargs)需要注意的是两个参数:p:激活概率。mode:测试模型,分为‘always’和‘training’。默认是training...原创 2018-08-21 11:16:20 · 1042 阅读 · 0 评论 -
mxnet:Optimizer rescale_grad
今天挖了个坑,关于优化器的初始化。优化器的初始化函数:create_optimizer在梯度反传的时候,我们用随机梯度下降等优化方法的时候,需要对一个batch_size的梯度求和然后求平均再反传。这个就涉及到一个参数:rescale_grad。这个参数的作用就是对梯度进行求平均,按道理应该是(实际也是)rescale_grad=1/batch_size。但是在optimi...原创 2018-08-31 11:16:18 · 1468 阅读 · 1 评论 -
mxnet:mx.sym.BlockGrad理解
解释:我们知道现在深度学习的框架是计算图,由节点和路径组成。在前向和反向的时候都是通过图路径传递的,那么这个函数是用在反向传播的时候,字面意思就是阻塞梯度传播。举例:输入两个点,输出一个点,如下图所示:正常反向传播公式就是:y=3*a+4*b在正常的反向传播的时候,a的偏导就是3,b的偏导为4(假设都是标量的情况下)。代码测试: import mxnet as ...原创 2018-08-29 10:16:28 · 3842 阅读 · 3 评论 -
mxnet:finetune 几层写法
深度学习中,常常会用到finetuning。所谓的finetune也就是微调,在已有的训练好的模型基础上,将该模型参数部分转移到新模型上或者全部作为新模型的初始化方式。这样带来好处就是不同数据源不同任务之间的快速训练达到想要的效果。这种学习方式也就是常说的迁移学习,当然,迁移学习的知识点很多,还是需要更多的去仔细研究和学习的。这几天尝试了一下微调,发现mxnet里面的这部分还是可以记录...原创 2018-08-30 10:55:54 · 1717 阅读 · 1 评论 -
insightface tripletloss源码阅读
一:insighteface tripletloss实现中的dataiter部分解读前言:mxnet的dataiter一般为继承io.DataIter类,实现其中主要的几个函数。需要实现的主要函数为:__init__(),reset(),next()。以及几个在fit函数中需要用到的几个属性:...原创 2018-09-11 14:04:23 · 1353 阅读 · 1 评论 -
网络压缩系列论文阅读
网络压缩系列1.mobileNet:旨在压缩模型,平衡速度和性能,达到在嵌入式设备中的一个较好的应用。重点在于一个深度可分离网络,将传统的m*n*w*h的卷积核变为一个DepthWise layer和一个PointWise layer。这种分离从直观上,减少了参数的数量和计算的数量,本质上还可以分离空间信息和深度信息,减少两者的耦合。同时,还提出来了两个参数,一个宽度乘数,一个分辨...原创 2018-07-16 16:33:44 · 634 阅读 · 0 评论