自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 nvidia.dali:深度学习加速神器!

  最近准备准备整合一个基于pytorch的深度学习平台,把常用的训练推理流程、模型、数据管理、metric测试以及各种有效的黑科技攒到一起,作为个人的使用工具可以提升算法开发和实验效率。为了验证不同特性的有效性选择在比较有说服力的imagenet上进行实验。之前也做过很多次imagenet的训练和模型复现,但是训练一次imagenet比较耗时。最近使用上了一个比较有效的数据预处理框架:nvidia.dali,感觉效果不错。DALI的概念  Nvidia DALI,NVIDIA’s Data Loadi

2021-01-29 17:08:48 6246 6

原创 Pytorch采坑记录:DDP加载之前的checkpoint后loss上升(metric下降)

  最近在鼓捣使用pytorch的distributeddataparallel这个API搭一个数据并行的训练测试任务,过程中遇到了一个问题,做一下记录。1、问题  使用DDP打包了一个模型训练了一段时间,loss不断下降metric不断上升,一切都是很正常的现象。当因为意外暂停或者手动暂停更改学习率而停止了程序,再开启程序加载之前的checkpoint继续训练,却发现loss突然比之前上升或者metric比之前下降了很多。仔细看了一下loss的值,发现直接回到刚开始第一次训练模型时的水平,仿佛chec

2021-01-22 12:10:10 4542 7

原创 Pytorch采坑记录:每隔num_workers个iteration数据加载速度很慢

  最近在做某个视觉任务的模型训练,由于数据量比较少为了效果好一点,决定现在imagenet上pretrain一下骨干网络。但是在训练的时候遇到了一个问题:每隔num_workers个iteration数据加载都很慢,通过查找资料和代码搞清了这个问题。背景  设计了一个网络做目标检测,骨干网络是自己diy的因此没有pretrain的模型。而目标检测的数据集比较小,为了把模型训的好一点决定现把骨干网络搭一个分类头做个分类模型,在ImageNet上面pretrain一下。于是乎下载了imagenet的数据集

2021-01-19 20:36:21 6906 4

原创 python闭包与装饰器

  今天写一篇儿纸来解释一下python下的闭包的概念,再说一下python里非常有用的一个特性:装饰器。我自己之前在学习这部分内容的时候很蒙,看了很多blog的解释才理解。希望能解释清楚一些,和大家一起讨论。一、参数作用域与闭包  任何一门语言都有参数作用域的概念,python也不例外。总体来说,在哪个作用域里定义的变量一般就应该在哪个作用域里使用,尽量不要跨作用域使用。当然python也提供了跨作用域使用变量的功能,但是处理起来要小心一些,否则就会出错误。  一般的,在某个作用域内定义的变量,在该

2021-01-05 17:48:29 216

原创 pytorch分布式训练(二):torch.nn.parallel.DistributedDataParallel

  之前介绍了Pytorch的DataParallel方法来构建分布式训练模型,这种方法最简单但是并行加速效果很有限,并且只适用于单节点多gpu的硬件拓扑结构。除此之外Pytorch还提供了DistributedDataParallel来构建分布式模型,并行加速程度更高,且支持多节点多gpu的硬件拓扑结构。一、Overall Design  整体的系统方案设计intuition也非常直观:每个gpu上都有一个local的model和一个mini-batch的数据,进行数据分布式训练时,每个gpu进行当前

2020-12-24 11:54:55 2588

原创 pytorch分布式训练(一):torch.nn.DataParallel

  本文介绍最简单的pytorch分布式训练方法:使用torch.nn.DataParallel这个API来实现分布式训练。环境为单机多gpu,不妨假设有4个可用的gpu。一、构建方法使用这个API实现分布式训练的步骤非常简单,总共分为3步骤:1、创建一个model,并将该model推到某个gpu上(这个gpu也将作为output_device,后面具体解释含义),不妨假设推到第0号gpu上,device = torch.device("cuda:0")model.to(device)2、将数

2020-12-18 18:44:08 5100 1

转载 python多线程基本操作

进程 && 线程 进程:是内存中的一个独立的句柄,我们可以理解为一个应用程序在内存中就是一个进程。 各个进程之间是内存相互独立,不可共享的 线程:每个应用运行之后就会对应启动一个主线程,通过主线程可以创建多个字线程,各个线程共享主进程的内存空间。 关于线程、进程...

2020-12-17 14:47:55 261

转载 RLock vs Lock

转载自:https://blog.csdn.net/ybdesire/article/details/80294638总结:Lock:该Lock只能被一个线程acquire一次,acquire后该Lock就处于Locked状态,必须release后才能被相同线程或其他的不同线程再次acquire一次。RLock:该Lock可被同一线程多次acquire(如线程中含有递归或循环逻辑,递归或多次acquire该Lock),待该线程所有针对该Lock的acquire都被release后,才能被相同线程或其

2020-12-17 14:36:11 172

转载 并发、并行、线程、进程与CPU基本概念

转载自:https://blog.csdn.net/qq_21480607/article/details/100135524首先我们需要了解一些基础概念: 串行,并发与并行 串行 多个任务,执行时一个执行完再执行另一个。 并发 多个线程在单个核心运行,同一时间一个线程运行,系统不停切换线程,看起来像同时运行,实际上是线程不停切换。 并行 每个线程分配给独立的核心,多个线程同时运行。 一、多核多线程 cpu的超线程技术 以2核4线程的电脑为例,电脑只有一个处理器(cpu)芯片,2个核是指在一

2020-12-16 11:15:26 295 1

原创 傻子坐飞机问题的求解

昨晚睡觉前刷手机,看到一道傻子坐飞机的题目,是一道概率的题目.想了一下觉得还挺有意思的,写一个比较容易理解的解题方法.首先描述一下问题.傻子坐飞机:假设有n个人(编号分别为从1,2,3…,n-1,n)要上飞机坐在n个座位上,飞机上的n个座位也有相应的编号1,2,3,…,n-1,n,假设每个人的座位选择规则为:第一个人是个傻子,他上了飞机后会从n个座位中随机选择一个坐下.除了第一个傻子以外,...

2020-04-22 11:37:10 1825

转载 pytorch求导

前言:构建深度学习模型的基本流程就是:搭建计算图,求得损失函数,然后计算损失函数对模型参数的导数,再利用梯度下降法等方法来更新参数。搭建计算图的过程,称为“正向传播”,这个是需要我们自己动手的,因为我们需要设计我们模型的结构。由损失函数求导的过程,称为“反向传播”,求导是件辛苦事儿,所以自动求导基本上是各种深度学习框架的基本功能和最重要的功能之一,PyTorch也不例外,后面有时间会写一下tens...

2020-03-27 10:13:18 5968 3

原创 主成分分析原理的数学证明

主成分分析原理的数学证明  主成分分析(Princle Componet Analysis, PCA)是一种经典的无监督方法,可以用来降低特征的维度,在稍微牺牲点性能的前提下减小运算量,提升计算效率.最近闲暇时间,看了一下主成分分析的数学证明,其中有一些部分搞的不是很清楚,翻了线性代数的教材和李航老师的《统计学习方法》,也参阅了一些博客的内容,基本把PCA的原理搞清楚了.做一个文字的记录,方便以...

2020-03-15 18:48:59 1491

原创 二分法采用五五分平均复杂度最小(相比四六分或三七分等)的定量证明方法

二分法采用五五分平均复杂度最小(相比四六分或三七分等)的定量证明方法  有一天晚上我深夜失眠,躺在床上辗转反侧,无法入睡。在床上滚来滚去,觉得十分无聊,不知怎么的想起了二分法。这是我们解决数据结构或算法问题中常用的一种divide and conquer的分治手段。但是二分法中的这个二,说的是把一个问题分解成两个子问题递归求解,并没有说明两个子问题要平均分。那么为什么通常大家都会进行平均的五五分...

2019-09-02 20:29:00 723

原创 绕固定坐标轴旋转与绕自身坐标轴旋转一致性证明

  最近在看人头姿态和视线方向检测的东西,需要考虑坐标系与坐标系之间的旋转.用欧拉角表示坐标系的旋转时存在两种旋转方法,另外旋转的顺序也会对旋转结果有影响,查了一些资料总结一下结果.  描述坐标系B\textbf{B}B相对于坐标系A\textbf{A}A的姿态有两种方式:第一种是绕固定坐标轴旋转,第二种是自身坐标轴旋转.假设坐标系A\textbf{A}A为世界坐标系(不动),坐标系B\text...

2019-05-15 14:58:57 9657 8

原创 模型压缩与加速:Octave Convolution

  自AlexNet刷新了ImageNet比赛的最佳记录以来,神经网络的又一次高潮猛烈的到来了.一些列各种各样的网络层出不穷,图像/音频/文本等各种任务下都开始了神经网络一统天下的声音.然而神经网络虽然很火,近些年在落地端却鲜有比较成功的案例,其中一个很重要的原因是这些网络需要很强的计算资源,基本都要跑在PC或者服务器上.因此个人认为深度学习如果想在工业上获得比较大的推广和应用,解决模型大小与推理...

2019-04-28 16:37:44 695

原创 caffe与tensorflow框架下卷积的维度计算与一致性证明

  对于卷积运算,假设输入维度为iii,卷积核的维度为www,步长为sss,这里为了叙述方便仅描述一维且忽略pad(pad可以看做已经乘以2加到输入维度中去了)。在caffe框架下,按照平移的原则一步步算卷积,如果最后还剩下若干个不够卷积核大小的数,则直接被抛弃,因此卷积的输出维度为:out = ⌊i−ws⌋\lfloor\frac{i-w}{s}\rfloor⌊si−w​⌋+1  而在t...

2019-04-10 18:27:16 1480

原创 Gaze Estimation笔记——data normalization

  最近在看一些视线检测(Gaze Estimation)相关的东西,由于之前没怎么接触过,所以也算是从头开始,很多新的东西要学。写一个系列笔记,把慢慢看懂的东西记录下来,做个整理,也方便以后回头查阅的时候能快速捡起来。  第一篇写的是基于normalization图像的工作,包括一系列类似的方法。这类方法的关键之处在于对输入的图像(face/eye)先进行normalization操作,将不同...

2019-04-10 13:34:38 5174 3

转载 十大排序算法

https://www.cnblogs.com/onepixel/articles/7674659.html

2018-03-20 17:16:19 255

转载 linux系统c++编译连接过程,动态库与静态库

https://www.cnblogs.com/ucas/p/5778664.html(linux系统c++编译连接过程)http://www.cnblogs.com/skynet/p/3372855.html(动态库与静态库)

2018-03-08 10:08:28 517

转载 Understanding LSTM Networks

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

2017-11-01 11:18:06 235

转载 分布式Tensorflow入门Demo

关于tensorflow的分布式训练和部署, 官方有个英文的文档介绍,但是写的比较简单, 给的例子也比较简单,刚接触分布式深度学习的可能不太容易理解。在网上看到一些资料,总感觉说的不够通俗易懂,不如自己写一个通俗易懂给大家分享一下。如果大家有看不懂的,欢迎留言,我再改文章,改到大学一年级的学生可以看懂的程度。1. 单机多GPU训练先简单介绍下单机的多GPU训练,然后再介绍分布式的多机多GPU训练。

2017-10-12 09:17:11 1076

转载 CMake入门教程

CMake入门教程参考文献:http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/index.html官方网址:http://www.cmake.org/下载网址:http://www.cmake.org/download/当前版本:3.1rc3本文基于CMake 2.8版本编写。CMake 是一个跨平台的,开源的构建系统(BuildSystem

2017-10-11 10:15:07 383

原创 docker初级操作

本地机器配置不给力,要租用阿里云的HPC服务器,怎奈阿里云只提供centos操作系统,而我的所有配置都是基于ubuntu系统,所以为了能够解决系统不统一的矛盾,研究了一下docker,可以通过简单的docker技术解决这个尴尬的问题。为了之后再查找操作,所以把目前用到的docker初级操作记录下来,将来再用的话忘了也好查找。首先在机器上安装好docker,具体可参考docker的官方文档。#从hub

2017-03-14 20:10:51 584

原创 读取和修改caffemodel文件里的参数

基于caffe 的卷积神经网络模型训练后得到的权值是通过Google Protobuffer来存储的后缀名为.caffemodel的二进制文件,这类文件一般很难直接打开进行权值的读取和修改。有的时候我们希望直观的看到网络中每个神经元的权值,或者希望更改网络的部分结构来得到新的结构进行finetune。在这样的情况下我们就需要对caffemodel文件进行操作。好在caffe的python接口提供了针

2017-03-09 19:22:28 20759 3

原创 SSD(based on Caffe)环境配置

之前在自己的笔记本上配置过caffe,实在是费了老劲。仍记得无数次呆呆的坐在电脑前,读着terminal中的报错信息,各种百度各种谷歌,一点一点的配置环境实在是太痛苦了。不过好在之前跌跌撞撞的配置成功了,可以干活了。然而最近悲催的发现,原来笔记本上的显卡内存太小,运行SSD的demo会内存爆炸,所以没法再撑下去了。去年夏天在宿舍配了一套台式机,本来想着用来打游戏的(装了GTX1060的卡),现在形势

2017-02-22 20:17:03 1526 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除