自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hxxjxw的博客

写了一天bug累了吧

  • 博客(62)
  • 收藏
  • 关注

原创 mxnet导出模型json和params文件

params文件中包含的是模型的网络参数,json文件包含的是网络的结构。json也就是symbol文件在MXNet体系中,net = symbol + params。

2021-08-27 15:58:26 657

原创 Python导入上层目录中的包(..) / 导入同级目录的包 (相对导入)

在dayaset_contra.py文件下想导入labelmaps.py中的包sys.path.append("..")from utils.labelmaps import get_vocabulary, labels2strs而且要求utils下必须有__init__.py文件而且必须是进入到dataset目录下执行python dataset_contra.py因为如果使用python lib/dataset/dataset_contra.py 这样执行的话,是不能用.....

2021-08-27 15:21:34 30291 2

原创 Microsoft CMT 系统

Microsoft CMT 系统 是 Microsoft Conference Management Toolkit

2021-08-26 19:47:46 4023

原创 Python调用函数带括号和不带括号的区别

不带括号时,调用的是这个函数本身,是整个函数体,是一个函数对象,是函数所在内存地址。不需等该函数执行完成 带括号(此时必须传入需要的参数),调用的是函数的return结果,需要等待函数执行完成的结果...

2021-08-26 17:38:40 407

原创 Python函数传参(一) —— (*星号)

在Python中,函数的参数的定义,无默认值的参数要放在有默认值参数的前面 def test(self,b,a=1): self.a=a self.b=b必须是这样,不然程序会报错但是在主程序里传参的时候,可以test(a,b=0)def test(b,a=1): print(a) print(b)test(a=2,b=3).........

2021-08-24 15:26:17 2782

原创 CUDA编程(三) —— 编程实践

1. 将两个元素数目为1024×1024的float数组相加首先我们思考一下如果只用CPU我们怎么串行完成这个任务#include <iostream>#include <stdlib.h>#include <sys/time.h>#include <math.h>using namespace std;int main(){ struct timeval start, end; gettimeofday( &a.

2021-08-22 22:37:27 1400 2

原创 Python logging日志模块 & Pytorch代码日志记录

日志让我们可以监测程序运行的状态。当然,很多时候用print也可以完成,但是学过会发现,用专门的日志模块会更加省力。 默认情况下python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING >INFO > DEBUG > NOTSET)import loggingloggin...

2021-08-22 21:36:14 382 1

原创 OpenStack

OpenStack最先由美国国家航空航天局(NASA)和 Rackspace 在 2010 年合作研发 属于IaaS(对标AWS,阿里云),但他属于私有云,为某些组织、企业exclusively提供服务。更贵,安全性也更高HKU的云服务就是用的openstack...

2021-08-21 19:32:15 80

原创 Pytorch分布式训练/多卡训练(二) —— Data Parallel并行(DDP)(2.3)(torch.multiprocessing(spawn) & Apex)

使用 torch.multiprocessing 取代torch.distributed.launch启动器 我们可以手动使用 torch.multiprocessing 进行多进程控制。绕开 torch.distributed.launch 自动控制开启和退出进程的一些小毛病 使用时,只需要调用 torch.multiprocessing.spawn,torch.multiprocessing 就会帮助我们自动创建进程。import torch.multiprocess.......

2021-08-21 15:00:58 5763

原创 docker使用GPU(nvidia-docker)

在docker19以前都需要单独下载nvidia-docker1或nvidia-docker2来启动容器,自从升级了docker19后跑需要gpu的docker只需要加个参数–gpus all 即可 为了让docker支持nvidia显卡,英伟达公司开发了nvidia-docker。该软件是对docker的包装,使得容器能够看到并使用宿主机的nvidia显卡。 为什么我的本机CUDA版本是10.0 而docker中是cuda9.0却也能够跑起来 一......

2021-08-21 13:00:30 8962

原创 nvcc(CUDA编译器)

nvcc就是CUDA的编译器 nvcc是10.0就代表你装了CUDA的版本是10,0. nvcc可以从CUDA Toolkit的/bin目录中获取,类似于gcc就是c语言的编译器。由于程序是要经过编译器编程成可执行的二进制文件,而cuda程序有两种代码,一种是运行在cpu上的host代码,一种是运行在gpu上的device代码,所以nvcc编译器要保证两部分代码能够编译成二进制文件在不同的机器上执行nvcc涉及到的文件后缀及相关意义如下表...

2021-08-21 12:36:10 9924

原创 linux 文件/目录名 颜色

linux系统默认不同类型文件的颜色蓝色:表示目录 白色:表示普通文件 绿色:表示可执行文件 红色:表示压缩文件 浅蓝色:链接文件 红色闪烁:表示链接的文件有问题 黄色:表示设备文件 灰色:表示其他文件 绿色高亮:高风险目录文件。其他人可以到该目录进行写入操作,通常是因为修改目录权限导致的这就是链接文件有问题的情况这是绿色高亮的情况...

2021-08-21 11:59:13 3167

原创 Linux(ubuntu)(十三) —— (系统)服务管理 (systemctl&service&chkconfig)&服务的运行级别(Runlevel)

Linux 服务管理两种方式: service和systemctlsystemctl是systemd对应的进程管理命令systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。systemctl命令兼容了service...

2021-08-21 11:27:45 1092

原创 ubuntu安装docker

ubuntu16.04https://blog.csdn.net/jinking01/article/details/82490688测试docker是否安装成功docker run hello-world

2021-08-20 10:17:29 114

原创 Python Fastai框架(fast.ai)

Tensorflow 已经有了 Keras,PyTorch 当然也得出一个对标的高阶封装库,于是 Fastai 应运而生。 由于目标市场比较低端,Fastai 在某种程度上舍弃了定制化,更追求开箱即用。个人感觉会成为神经网络界的 sklearn 吧。...

2021-08-19 21:18:16 517

原创 CUDA编程(二) —— CUDA编程模型

CUDA代码示例test.cu#include "device_launch_parameters.h"#include <iostream>int main(){ int deviceCount; cudaGetDeviceCount(&deviceCount); for(int i=0;i<deviceCount;i++) { cudaDeviceProp devProp; cudaGetDev.

2021-08-19 20:31:13 538

原创 CUDA编程(一) —— 相关概念&基础知识

CUDA(Compute Unified Device Architecture)的中文全称为计算统一设备架构。做图像视觉领域的同学多多少少都会接触到CUDA,毕竟要做性能速度优化,CUDA是个很重要的工具,CUDA是做视觉的同学难以绕过的一个坑,必须踩一踩才踏实。CUDA编程真的是入门容易精通难,具有计算机体系结构和C语言编程知识储备的同学上手CUDA编程应该难度不会很大...

2021-08-19 20:06:17 1051

原创 Pytorch混合精度(FP16&FP32)(AMP自动混合精度)/半精度 训练(一) —— 原理(torch.half)

一般用混合精度(AMP, Automatic mixed precision),用半精度可能对acc的影响较大 混合精度的performance也要看网络,有些网络的提升不大,有些网络会影响acc AMP自动混合精度,可以在神经网络推理过程中,针对不同的层,采用不同的数据精度进行计算,从而实现节省显存和加快速度的目的。在Pytorch 1.5版本及以前,通过NVIDIA提供的apex库可以实现amp功能。但是在使用过程中会伴随着一些版本兼容和奇怪的报错问题。从...

2021-08-19 12:24:35 12369 4

原创 batchsize大小对模型训练的影响

从纯GPU算力的角度来说,batchsize大小的区别并不大,输入数据就那些,计算量是确定的。不同的batchsize大小影响反向传播和dataloader的次数,这部分消耗的时间也是很大的基本结论batch size过小,花费时间多,同时梯度震荡严重,不利于收敛;batch size过大,不同batch的梯度方向没有任何变化,容易陷入局部极小值。迭代速度 可见当batchsize增大到一定程度之后,再增大所带来的时...

2021-08-19 11:25:18 4001

原创 Pytorch模型提速

①减少IO操作频率②Dataloader使用pin_memory和num_workers③使用半精度训练④更好的显卡,更轻的模型

2021-08-19 10:07:57 92

原创 Python itertools库

itertools库是python中的一个专门用于高效处理迭代问题的内置函数库。 itertools中的函数大多是返回各种迭代器对象,其中很多函数的作用我们平时要写很多代码才能达到,而在运行效率上反而更低,毕竟人家是系统库。例如itertools.accumulate元素累加itertools.combinations求列表或生成器中指定数目的元素不重复的所有组合...

2021-08-18 21:05:02 304

原创 Pytorch分布式训练/多卡训练(二) —— Data Parallel并行(DDP)(2.2)(代码示例)(BN同步&主卡保存&梯度累加&多卡测试inference&随机种子seed)

DDP的使用非常简单,因为它不需要修改你网络的配置。其精髓只有一句话model = DistributedDataPrallel(model, device_ids=[local_rank], output_device=local_rank) 原本的model就是你的PyTorch模型,新得到的model,就是你的DDP模型。最重要的是,后续的模型关于前向传播、后向传播的用法,和原来完全一致!DDP把分布式训练的细节都隐藏起来了,不需要暴露给用户,非常优雅!初...........

2021-08-18 20:02:37 7060 5

原创 Pytorch分布式训练/多卡训练(二) —— Data Parallel并行(DDP)(2.1)(基本概念&代码框架)

Pytorch官网已经建议使用DistributedDataParallel来代替DataParallel, 因为DistributedDataParallel比DataParallel运行的更快, 然后显存分配的更加均衡. 而且DistributedDataParallel功能更加强悍DDP与DP的区别①DataLoader部分需要使用Sampler,保证不同GPU卡处理独立的子集.②模型部分使用DistributedDataParallel.DDP的主要代码部分.......

2021-08-18 17:24:30 4486 1

原创 Python ctx

ctx是context的缩写, 翻译成"上下文; 环境"ctx专门用在静态方法中我们知道python类函数都要带self参数,但是在静态方法中,带ctx参数而不是selfself指的是实例对象; 而ctx用在静态方法中, 调用的时候不需要实例化对象, 直接通过类名就可以调用, 所以self在静态方法中没有意义自定义的forward()方法和backward()方法的第一个参数必须是ctx; ctx可以保存forward()中的变量,以便在backward()中继续使用, 下一条是具体的.

2021-08-18 12:18:48 3125

原创 Pytorch清空显存缓冲区(torch.cuda.empty_cache)

torch.cuda.empty_cache()写代码的好习惯是在程序最后执行以下这句话

2021-08-18 12:09:47 43349 4

原创 Python Type Hint(类型标注/类型提示) (箭头 ->)(type annotation)

Python 3 -> 是函数注释的一部分,表示函数返回值的类型。def useful_function(x) -> int: # Useful code, using x, here return x

2021-08-18 09:47:20 2481

原创 numpy/pytorch 高级索引(花式索引(index索引&数组索引&tuple索引) & 布尔索引)

Python高级索引是一个很trick的操作,用的好可以提高效率,但是如果不了解也经常容易看不懂别人代码写的什么意思........ 高级索引大致可分为整数数组索引、布尔索引及花式索引三类整数数组索引整数数组索引指使用同形状的多个数组分别指定元素的所有维度(不指定的维度也可以用切片:或省略号...与索引数组组合),可精准取出一批指定位置的元素,按照给定数组形状返回。例1:取出x中(0,0),(1,1)和(2,0)位置处的元素。传入的位置......

2021-08-16 10:22:45 8041

原创 Python namedtuple数据结构(命名元组)(collections)

namedtuple是tuple的加强版,位于collections模块,有了namedtuple后通过属性访问数据能够让我们的代码更加的直观更好维护。 namedtuple能够用来创建类似于tuple的数据类型,除了能够用索引来访问数据,能够迭代,还能够方便的通过属性名来访问数据。from collections import namedtuple # 基本例子Point = namedtuple('Point',['x','y']) # 类名为Point,属性有'...

2021-08-16 09:51:06 141

原创 Pytorch apply() 函数

apply 函数是nn.Module 中实现的, 递归地调用self.children() 去处理自己以及子模块我们知道pytorch的任何网络net,都是torch.nn.Module的子类,都算是module, 也就是模块。pytorch中的model.apply(fn)会递归地将函数fn应用到父模块的每个子模块submodule,也包括model这个父模块自身。经常用于初始化init_weights的操作......

2021-08-16 09:39:48 11097 1

原创 Pytorch/Python计算交并比IOU(IU)代码(批量算IOU)

检测准确率用IOU来计算def IOU(boxA, boxB): boxA = [int(x) for x in boxA] boxB = [int(x) for x in boxB] xA = max(boxA[0], boxB[0]) yA = max(boxA[1], boxB[1]) xB = min(boxA[2], boxB[2]) yB = min(boxA[3], boxB[3]) interArea = max(0, xB.

2021-08-15 20:57:13 4734

原创 Python 星号表达式*(starred expression / unpack / 解包/解耦)

之前见过的*args, **kwargs也属于星号表达式的应用星号表达式可用于unpack可迭代的变量例2,递归求和当然还包括在Aster中遇到的batch中包含b个(image,label,length)星号表达式结合zip就能很简单的将b个image赋给images,b个label赋给labels,b个length赋给lengths...

2021-08-13 19:30:18 358

原创 PIL Image和opencv读入图片相互转化

PIL读入的图片转为opencvimg=Image.open('d.png')img = cv2.cvtColor(np.array(img),cv2.COLOR_RGB2BGR)opencv读入的图片转为PILimg = cv2.imread("car.jpg")image = Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))

2021-08-13 10:18:47 534

原创 Pytorch为不同层设置不同的学习率(全局微调)

对全局微调时,我们希望改换过的层和其他层的学习速率不一样,这时候把其它层和新层在optimizer中单独赋予不同的学习速率。ignored_params = list(map(id, model.fc.parameters()))base_params = filter(lambda p: id(p) not in ignored_params, model.parameters()) optimizer = torch.optim.SGD...

2021-08-13 09:50:09 1013 1

原创 Python处理XML(ElementTree)

ElementTree是Python常用的处理XML文件的类下面所有的操作都将下面这段XML为例,我们将它保存为sample.xml。<?xml version="1.0"?><data> <country name="Liechtenstein"> <rank>1</rank> <year>2008</year> <gdppc>14110.

2021-08-12 22:15:01 3375

原创 Python类的__call__方法 (将类实例变成可调用对象)

在类中实现__call__方法,一个类实例可以变成一个可调用对象。在Python中,函数其实是一个对象:由于 f 可以被调用,所以,f 被称为可调用对象。所有的函数都是可调用对象。一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()。class Person(object): def __init__(self, name, gender): self.name = name self.gender = g.

2021-08-12 20:47:17 338

原创 Python opencv putText()中文乱码问题

使用cv2.putText()只能显示英文字符,中文会出现乱码问题,因此使用PIL在图片上绘制添加中文,可以指定字体文件。大体思路:OpenCV图片格式转换成PIL的图片格式; 使用PIL绘制文字; PIL图片格式转换成OpenCV的图片格式;# coding=utf-8# cv2解决绘制中文乱码 import cv2import numpyfrom PIL import Image, ImageDraw, ImageFont def cv2ImgAddText(i..

2021-08-12 16:07:19 6287

原创 Pytorch函数keepdim=True

keepdim(bool)– 保持输出的维度 。 当keepdim=False时,输出比输入少一个维度(就是指定的dim求范数的维度)。而keepdim=True时,输出与输入维度相同,仅仅是输出在求范数的维度上元素个数变为1。 这也是为什么有时我们把参数中的dim称为缩减的维度,因为norm运算之后,此维度或者消失或者元素个数变为1。...

2021-08-11 21:24:04 4527

原创 PyTorch多卡/多GPU/分布式DPP的基本概念(node&rank&local_rank&nnodes&node_rank&nproc_per_node&world_size)

node物理节点,可以是一台机器也可以是一个容器,节点内部可以有多个GPU。rank & local_rank用于表示进程的编号/序号(在一些结构图中rank指的是软节点,rank可以看成一个计算单位),每一个进程对应了一个rank的进程,整个分布式由许多rank完成。local_rank: rank是指在整个分布式任务中进程的序号;local_rank是指在一个node上进程的相对序号,local_rank在node之间相互独立。nnodes物理节点数量node_ra.

2021-08-11 14:49:13 20549 5

原创 Pytorch backend 通信后端

是在DDP等分布式模式中的概念。分布式通信过程主要是完成模型训练过程中参数信息的传递,主要考虑通信后端和通信模式选择,后端与模式对整个训练的收敛速度影响较大,相差可达2~10倍。 backend 通信后端可选的包括:nccl(NVIDIA推出)、gloo(Facebook推出)、 mpi(OpenMPI)。从测试的效果来看,如果显卡支持nccl,建议后端选择nccl,,其它硬件(非N卡)考虑用gloo、mpi(OpenMPI)。...

2021-08-11 14:40:26 1504

原创 Pytorch分布式训练/多卡训练(三) —— Model Parallel 模型并行

Model ParallelPart of the model on CPU and part on the GPUclass DistributedModel(nn.Module): def __init__(self): super().__init__( embedding=nn.Embedding(1000, 10), rnn=nn.Linear(10, 10).to(device), )..

2021-08-11 14:19:31 3862

空空如也

空空如也

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

TA关注的人

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