- 博客(206)
- 收藏
- 关注
原创 可变长参数
可变长参数存在的意义是:每次调用一个函数处理不同量的参数输入。即,参数在调用之前输入的参数数量是未知的,或者多次调用该函数,每次的参数输入的量是不一致的;可变长参数分为非关键字和关键字类型,分别对应元组和字典,如下定义一个类,功能是打印出输入的函数:>>> class Test: def keyword(self,a,b,*non_keyword,**keyword): print('a is ',a) print('b is ',b)
2020-08-19 11:30:26
129
原创 Pytorch数据处理
Pytorch:常用工具模块 数据处理在解决深度学习问题的过程中,往往需要花费大量的精力去处理数据,包括图像、文本、语音或其它二进制数据等。数据的处理对训练神经网络来说十分重要,良好的数据处理不仅会加速模型训练,更会提高模型效果。考虑到这点,PyTorch提供了几个高效便捷的工具,以便使用者进行数据处理或增强等操作,同时可通过并行化加速数据加载。数据加载在PyTorch中,数据加载可通过自定义的数据集对象。数据集对象被抽象为Dataset类,实现自定义的数据集需要继承Dataset,并实现两
2020-08-18 17:48:05
1019
转载 优化Pytorch框架的数据加载过程
硬件层面:将数据放到/dev/shm文件夹,这个目录是linux下一个利用内存虚拟出来的一个目录,这个目录中的文件都是保存在内存中,而不是磁盘上。/dev/shm的容量默认最大为内存的一半大小,使用df -h命令可以看到。winycg@ubuntu:~$ df -hFilesystem Size Used Avail Use% Mounted onudev 79G 0 79G 0% /devtmpfs 16G 11
2020-08-18 16:57:35
659
原创 python 三类继承问题
super().__init__() 1、子类构造函数调用super().__init__() 1.1、第一个直接继承父类,可以调用name 1.2、第二个继承自父类,覆盖初始化化def init,增加属性age,不能调用name属性 1.3、第三个继承自父类,覆盖初始化化def init,并继承初始化属性name,可以调用 2、继承顺序 3、python2和3的区别 1、子类构造函数调用super().init()例:1.1、.
2020-08-18 11:48:53
215
原创 torch.no_grad
requires_gradVariable变量的requires_grad的属性默认为False,若一个节点requires_grad被设置为True,那么所有依赖它的节点的requires_grad都为True。x=Variable(torch.ones(1))w=Variable(torch.ones(1),requires_grad=True)y=x*wx.requires_grad,w.requires_grad,y.requires_gradOut[23]:(False,Tru..
2020-08-14 11:49:16
255
原创 ShuffleNet v2
ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design论文指出单纯的乘加运算FLOPs并不能完全表示模型的运算速度,访存开销memory access cost(MAC)也应该考虑进去。并基于这,设计出了轻量化网络ShuffleNet V2。提出了4个改进的原则:(1)单个模块的输入输出通道相同,可以最小化访存开销(MAC)c1:输入通道数c2:输出通道数h,w:输入feature .
2020-08-13 15:02:37
255
转载 轻量级网络ShuffleNet v1
ShuffleNet paperShuffleNet是旷视科技提出的一种计算高效的CNN模型,其和MobileNet和SqueezeNet等一样主要是想应用在移动端。所以,ShuffleNet的设计目标也是如何利用有限的计算资源来达到最好的模型精度,这需要很好地在速度和精度之间做平衡。ShuffleNet的核心是采用了两种操作:pointwise group convolution和channel shuffle,这在保持精度的同时大大降低了模型的计算量。目前移动端CNN模型主要设计思路主要是两个方面:
2020-08-13 12:26:55
307
原创 Windows装机必备软件
目录系统工具 工作学习 开发工具 VS插件2018年12月21日,最近要装新电脑,借此将自己常用的工具总结一下。系统工具wox,软件快速启动工具,有翻译等插件 everything,本地文件文件夹快速检索工具 ditto,剪贴板增强工具,缓存剪切历史 Total Commander 飞扬时空版,文件管理软件,替代系统资源管理器,有众多特色功能 CCleaner,系统优化清理软件 Rapid Environment Editor,环境变量编辑工具 IObit Unlock.
2020-08-13 11:37:54
301
原创 tensorflow、mxnet、pytorch、Caffe安装
目录准备工作 设置conda国内镜像源 conda 深度学习环境 tensorflow、mxnet、pytorch安装 tensorflow mxnet pytorch Caffe安装 配置文件修改 编译时常见错误 运行时错误 参考GPU为RTX2080,系统为更新到最新版本的Win10。准备工作安装VS2015,到官网地址older-download下载安装 安装Matlab,笔者安装的是Matlab2017b 安装Anaconda3-4.4.
2020-08-13 11:36:18
396
转载 VSCode Python开发环境配置
目录准备工作 VSCode初步 用户界面 快捷键 安装扩展 配置文件与内置终端设置 高级调试配置 小结 参考准备工作安装anaconda,官网下载安装,笔者安装在"D:\Anaconda3" 安装好之后,查看环境变量path中是否有如下路径,没有的话添加进去D:\Anaconda3D:\Anaconda3\Scripts安装git,官网下载安装,默认安装路径"C:\Program Files\Git" 安装VSCode,官网下载安装VSCode初步.
2020-08-13 11:29:32
3014
原创 Group Convolution分组卷积
目录写在前面 Convolution VS Group Convolution Group Convolution的用途 参考写在前面Group Convolution分组卷积,最早见于AlexNet——2012年Imagenet的冠军方法,Group Convolution被用来切分网络,使其在2个GPU上并行运行,AlexNet网络结构如下:Convolution VS Group Convolution在介绍Group Convolution前,先回顾下常规卷积是怎么.
2020-08-13 11:16:04
460
原创 ShuffleNet V1
ShuffleNet: AnExtremely Efficient Convolutional Neural Network for Mobile Devices这篇文章在mobileNet的基础上主要做了1点改进:mobileNet只做了3*3卷积的deepwiseconvolution,而1*1的卷积还是传统的卷积方式,还存在大量冗余,ShuffleNet则在此基础上,将1*1卷积做了shuffle和group操作,实现了channel shuffle 和pointwise group conv
2020-08-13 09:57:53
226
原创 MobileNet V2 - 再探
MobileNetV2: Inverted Residuals and Linear Bottlenecks主要贡献有2点:1,提出了逆向的残差结构(Inverted residuals)由于MobileNetV2版本使用了残差结构,和resnet的残差结构有异曲同工之妙,源于resnet,却和而不同。由于Resnet没有使用depthwise conv,所以,在进入pointwise conv之前的特征通道数是比较多的,所以,残差模块中使用了0.25倍的降维。而MobileNet v.
2020-08-13 09:49:01
457
原创 Xception
Xception: DeepLearning with Depthwise Separable Convolutions这篇文章主要在Inception V3的基础上提出了Xception(Extreme Inception),基本思想就是通道分离式卷积(depthwise separable convolution operation)。最终实现了(1)模型参数有微量的减少,减少量很少,具体如下,(2)精度较Inception V3有提高,ImageNET上的精度如下,先说...
2020-08-11 18:01:28
252
转载 ResNeXt
论文:Aggregated Residual Transformations for Deep Neural Networks论文链接:https://arxiv.org/abs/1611.05431PyTorch代码:https://github.com/miraclewkf/ResNeXt-PyTorch这是一篇发表在2017CVPR上的论文,介绍了ResNet网络的升级版:ResNeXt。下面介绍我看这篇论文时候做的笔记,和大家一起分享该模型。作者提出 ResNeXt 的主..
2020-08-11 17:53:33
173
转载 MobileNet V2
一、论文:https://arxiv.org/abs/18非官方Caffe代码:https://github.com/shicai/MobileNet-Caffe二、论文理解MobileNet V2 是对 MobileNet V1 的改进,同样是一个轻量级卷积神经网络。1)基础理论--深度可分离卷积(DepthWise操作)标准的卷积过程可以看上图,一个2×2的卷积核在卷积时,对应图像区域中的所有通道均被同时考虑,问题在于,为什么一定要同时考虑图像区域和通道?我们为什么不能把通道
2020-08-11 17:21:27
208
原创 GoogleNetV1~V3
Inception v1的网络,主要提出了Inceptionmodule结构(1*1,3*3,5*5的conv和3*3的pooling组合在一起),最大的亮点就是从NIN(Network in Network)中引入了1*1 conv,结构如下图所示,代表作GoogleNet假设previous layer的大小为28*28*192,则,a的weights大小,1*1*192*64+3*3*192*128+5*5*192*32=387072a的输出featuremap大小,28*28*64+
2020-08-11 14:39:59
342
转载 SENet
前言在深度学习领域,CNN分类网络的发展对其它计算机视觉任务如目标检测和语义分割都起到至关重要的作用,因为检测和分割模型通常是构建在CNN分类网络(称为backbone)之上。提到CNN分类网络,我们所熟知的是VGG,ResNet,Inception,DenseNet等模型,它们的效果已经被充分验证,而且被广泛应用在各类计算机视觉任务上。这里我们介绍一篇CVPR2017的文章SENet,它赢得了最后一届ImageNet 2017竞赛分类任务的冠军。重要的一点是SENet思路很简单,很容易扩展在已有网络结
2020-08-11 10:37:42
637
原创 Mobilenet v1
深度可分离卷积将普通卷积分为结果相似的两个步骤第一步:第二步:采用Pointwise卷积的优势:Mobile net网络结构:(relu6)再度压缩的比较:
2020-08-07 13:45:52
172
原创 pspnet图像分割网络
pspnet:deeplab: 语义分割的目标仅仅是获知已知对象的每个像素的类别标签。 场景解析是基于语义分割的,它的目标是获知图像内所有像素的类别标签。 场景解析通过使用金字塔池化模块(Pyramid Pooling Module),在整合基于不同区域的上下文后,PSPNet在效果上超过了FCN、DeepLab和DilatedNet等时下最佳的方法。PSPNet最终: 获得2016年ImageNet场景解析挑战的冠军 在PASCAL VO...
2020-08-07 10:32:30
1250
转载 YOLO系列
文章目录一、开山之作:YOLOv1 1.1 简介 1.2 网络结构 1.3 实现细节 1.4 性能表现 二、更快更准:YOLOv2 2.1 简介 2.2 网络结构 2.3 改进方法 2.4 性能表现 三、巅峰之作:YOLOv3 3.1 简介 3.2 网络结构 3.3 改进之处 3.4 性能表现 四、大神接棒:YOLOv4 4.1 简介 4.2 网络结构 4.3 各种Tricks总结 4.4 改进方法 4.5 性能表现 .
2020-08-06 14:52:04
1163
转载 efficientNet的原理及实现
efficientNet的原理及实现efficientNet是对前几个网络的复合,例如wideResnet和Resnet,将网络宽度和网络深度以及图像像素大小进行一个复合融合,然后达到一个比较好的网络。一,摘要卷积神经网络目前的发展一般都是固定资源进行发展,如果计算能力足够,网络还会继续加深。在这篇文章中作者系统地研究了模型缩放,并发现仔细地平衡网络的深度、宽度和分辨率可以带来更好的性能。基于这一观察结果,作者提出了一种新的标度方法,使用简单而高效的复合系数来均匀地标度深度/宽度/分辨率的所有维
2020-08-06 11:37:45
2389
原创 torch.gather()和torch.index_select说明
b = torch.Tensor([[1,2,3],[4,5,6]])print bindex_1 = torch.LongTensor([[0,1],[2,0]])index_2 = torch.LongTensor([[0,1,1],[0,0,0]])print torch.gather(b, dim=1, index=index_1)print torch.gather(b, dim=0, index=index_2)观察它的输出结果: 1 2 3 4 5 6[t.
2020-08-05 13:27:19
1103
原创 backward()说明
1.out.backwark()中out是一个标量此时可以直接使用out.backwark():import torchfrom torch.autograd import Variable#生成一个内容为[2,3]的张量,Varibale 默认是不要求梯度的,如果要求梯度,#需要加上requires_grad=True来说明#这里的Variable是为了设置变量,把a0=2,a1=3设置为两个变量a = Variable(torch.tensor([2,3]),requires_gr
2020-08-04 18:25:53
829
转载 focal loss解读
Focal loss论文详解Focal Loss for Dense Object DetectionICCV2017 RBG和Kaiming大神的新作。论文目标我们知道object detection的算法主要可以分为两大类:two-stage detector和one-stage detector。前者是指类似Faster RCNN,RFCN这样需要region proposal的检测算法,这类算法可以达到很高的准确率,但是速度较慢。虽然可以通过减少proposal的数量或降低输入图..
2020-08-02 20:40:19
390
转载 谱聚类基础
谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也不复杂。在处理实际的聚类问题时,个人认为谱聚类是应该首先考虑的几种算法之一。下面我们就对谱聚类的算法原理做一个总结。1. 谱聚类概述谱聚类是从图论中演化出来的算法,后来在聚类中得到了广泛的应用。它的主要思想是把所有的数据看做空间中的点,这些点之间可以用边连接起来。距离较远的两个点之间的边权重值较低,而距离较
2020-07-20 15:57:04
424
原创 sklearn 谱聚类接口介绍
1. scikit-learn谱聚类概述在scikit-learn的类库中,sklearn.cluster.SpectralClustering实现了基于Ncut的谱聚类,没有实现基于RatioCut的切图聚类。同时,对于相似矩阵的建立,也只是实现了基于K邻近法和全连接法的方式,没有基于ϵ\epsilonϵ-邻近法的相似矩阵。最后一步的聚类方法则提供了两种,K-Means算法和 discretize算法。 对于SpectralClustering的参数,我们主要需要调参的是相似矩阵建立相关的参数和
2020-07-20 14:25:19
417
转载 拉普拉斯矩阵
拉普拉斯算子和拉普拉斯矩阵在机器学习、多维信号处理等领域,凡涉及到图论的地方,相信小伙伴们总能遇到和拉普拉斯矩阵和其特征值有关的大怪兽。哪怕过了这一关,回想起来也常常一脸懵逼,拉普拉斯矩阵为啥被定义成 [公式] ?这玩意为什么冠以拉普拉斯之名?为什么和图论有关的算法如此喜欢用拉普拉斯矩阵和它的特征值?最近读论文的时候,刚好趁机温习了一下相应的内容,寻本朔源一番,记录下来,希望大家阅读之后,也能够有个更加通透的理解。要讲拉普拉斯矩阵,就要从拉普拉斯算子讲起,要讲拉普拉斯算子,就要从散度讲起~于是我们从
2020-07-09 10:58:15
1022
原创 python中 类的继承
一 概述面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”,继承的过程,就是从一般到特殊的过程。在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。继承概念的实现方式主要有2类:实现继承、接口继承。实现继承是指使用基类的属性和方
2020-07-03 10:12:03
269
原创 tkinter
Tkinter 是使用 python 进行窗口视窗设计的模块. 简单的构造, 多平台, 多系统的兼容性, 能让它成为让你快速入门定制窗口文件的好助手. 它在 python 窗口视窗模块中是一款简单型的. 所以用来入门, 熟悉 窗口视窗的使用, 非常有必要.tkinter 的窗口部件2.1 Label & Button 标签和按钮2.2 Entry & Text 输入, 文本框2.3 Listbox 列表部件2.4 Radiobutton 选择按钮2.5 Scale 尺度2.6
2020-06-17 14:13:07
205
原创 tkinter pack grid place 放置位置
pack grid place 放置位置pack首先我们先看看我们常用的pack(), 他会按照上下左右的方式排列.tk.Label(window, text='1').pack(side='top')#上tk.Label(window, text='1').pack(side='bottom')#下tk.Label(window, text='1').pack(side='left')#左tk.Label(window, text='1').pack(side='right')#右grid
2020-06-17 14:10:55
336
原创 tkinter messagebox
messagebox 弹窗弹窗会提示用户,或让用户做一个选择,根据用户做出的选择,得到返回值,再作下一步操作。def hit_me(): tk.messagebox.showinfo(title='Hi', message='hahahaha') tk.messagebox.showinfo(title='',message='')#提示信息对话窗 tk.messagebox.showwarning()#提出警告对话窗 tk.messagebox.showerror()#提出错
2020-06-17 14:03:49
266
原创 tkinter Frame
Frame部件###定义一个`label`显示`on the window`tk.Label(window, text='on the window').pack()###在`window`上创建一个`frame`frm = tk.Frame(window)frm.pack()###在刚刚创建的`frame`上创建两个`frame`,我们可以把它理解成一个大容器里套了一个小容器,即`frm`上有两个`frame` ,`frm_l`和`frm_r`frm_l = tk.Frame(frm
2020-06-17 13:46:46
170
原创 thinter Menu
menubar 部件window = tk.Tk()window.title('my window')window.geometry('200x200')l = tk.Label(window, bg='yellow', width=20, text='')l.pack()counter = 0def do_job(): global counter l.config(text='do '+ str(counter)) counter+=1##创建一个菜单栏,这里
2020-06-17 11:55:36
211
原创 ovo以及ovr的直观理解
多分类问题与二分类问题关系首先,两类问题是分类问题中最简单的一种。其次,很多多类问题可以被分解为多个两类问题进行求解(请看下文分解)。所以,历史上有很多算法都是针对两类问题提出的。下面我们来分析如何处理多分类问题:直接分成多类一对一的策略(OVO)给定数据集D这里有N个类别,这种情况下就是将这些类别两两配对,从而产生N(N−1)2个二分类任务,在测试的时候把样本交给这些分类器,然后进行投票。一对其余策略(ovr)将每一次的一个类作为正例,其余作为反例,总共训练N个分类器。测试的时候若仅有一个分
2020-05-27 09:15:26
3315
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅