
深度学习
文章平均质量分 64
xddwz
这个作者很懒,什么都没留下…
展开
-
LoRA大模型加速微调和训练算法解读
冻结预训练模型权重,并将可训练的秩分解矩阵注入到Transformer层的每个权重中,大大减少了下游任务的可训练参数数量。原创 2023-08-31 17:26:06 · 1835 阅读 · 0 评论 -
CNN计算网络各层参数量与FLOPs
CNN中经常需要考虑到网络的参数量与计算量等问题,具体的计算方法为:其中,K是卷积核的大小,Cin核Cout表示输入与输出的通道数,H与W表示特征图的大小。此外,可以通过python中的stat模块计算与验证,代码:import torchimport torch.nn as nnfrom torchstat import statclass Net(nn.Module): def __init__(self): super(Net, self).__ini原创 2021-03-10 10:47:35 · 725 阅读 · 1 评论 -
Focal Loss
1. 总述Focal loss主要是为了解决one-stage目标检测中正负样本比例严重失衡的问题。该损失函数降低了大量简单负样本在训练中所占的权重,也可理解为一种困难样本挖掘。2. 损失函数形式Focal loss是在交叉熵损失函数基础上进行的修改,首先回顾二分类交叉上损失:是经过激活函数的输出,所以在0-1之间。可见普通的交叉熵对于正样本而言,输出概率越大损失越小。对于负样本而言,输出概率越小则损失越小。此时的损失函数在大量简单样本的迭代过程中比较缓慢且可能无法优化至最优。那么.原创 2021-03-05 15:17:01 · 286 阅读 · 0 评论 -
momentum 动量法
参考:https://blog.youkuaiyun.com/tsyccnh/article/details/76270707?utm_source=distribute.pc_relevant.none-task如果把梯度下降法想象成一个小球从山坡到山谷的过程,那么前面几篇文章的小球是这样移动的:从A点开始,计算当前A点的坡度,沿着坡度最大的方向走一段路,停下到B。在B点再看一看周围坡度最大的地方,沿着这个坡度方向走一段路,再停下。确切的来说,这并不像一个球,更像是一个正在下山的盲人,每走一步都要停下来,用拐杖来原创 2021-02-20 17:49:45 · 522 阅读 · 0 评论 -
Batch Normalization详解
Batch Normalization作为最近一年来DL的重要成果,已经广泛被证明其有效性和重要性。虽然有些细节处理还解释不清其理论原因,但是实践证明好用才是真的好,别忘了DL从Hinton对深层网络做Pre-Train开始就是一个经验领先于理论分析的偏经验的一门学问。本文是对论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》的导读。 机器学习领域有个很重要的假原创 2021-02-09 17:38:51 · 305 阅读 · 0 评论 -
dropout原理解析
1. Dropout简介1.1 Dropout出现的原因在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象。在训练神经网络的时候经常会遇到过拟合的问题,过拟合具体表现在:模型在训练数据上损失函数较小,预测准确率较高;但是在测试数据上损失函数比较大,预测准确率较低。过拟合是很多机器学习的通病。如果模型过拟合,那么得到的模型几乎不能用。为了解决过拟合问题,一般会采用模型集成的方法,即训练多个模型进行组合。此时,训练模型费时就成为一个很大的问题,不仅训练多.原创 2021-02-08 19:35:16 · 778 阅读 · 0 评论 -
卷积神经网络感受野的计算
学习RCNN系列论文时, 出现了感受野(receptive field)的名词, 感受野的尺寸大小是如何计算的,在网上没有搜到特别详细的介绍, 为了加深印象,记录下自己对这一感念的理解,希望对理解基于CNN的物体检测过程有所帮助。1感受野的概念 在卷积神经网络中,感受野的定义是 卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小。 RCNN论文中有一段描述,Alexnet网络pool5输出的特征图上的像素在输入图像上有很大的感受野(ha.原创 2021-02-07 17:30:34 · 594 阅读 · 0 评论 -
过拟合
欠拟合与过拟合的概念的成因比较简单,观点统一,这里不再介绍。现在常用的判断方法是从训练集中随机选一部分作为一个验证集,采用K折交叉验证的方式,用训练集训练的同时在验证集上测试算法效果。在缺少有效预防欠拟合和过拟合措施的情况下,随着模型拟合能力的增强,错误率在训练集上逐渐减小,而在验证集上先减小后增大;当两者的误差率都较大时,处于欠拟合状态(high bias, low variance);当验证集误差率达到最低点时,说明拟合效果最好,由最低点增大时,处与过拟合状态(high variance, low bi原创 2021-02-07 14:55:34 · 307 阅读 · 0 评论 -
maskrcnn训练问题报错:selected_polygons.append(self.polygons[i]) IndexError: list index out of range
训练mask rcnn实例分割时报错:Traceback (most recent call last): File "tools/train_net.py", line 203, in <module> main() File "tools/train_net.py", line 196, in main model = train(cfg, args.local_rank, args.distributed) File "tools/train_net.py原创 2021-01-27 16:56:38 · 1565 阅读 · 2 评论 -
Linux查看GPU的进程
有时候会出现GPU被占满却没有进程的情况,可通过下面进程查看僵尸jin chengsudo fuser -v /dev/nvidia*原创 2021-01-26 20:02:37 · 2401 阅读 · 0 评论 -
算法详解之Fast RCNN
目录一、解决的问题二、算法概要训练的过程测试的过程三、算法详解四、实验结果五、总结一、解决的问题R-CNN存在以下几个问题:训练分多步。通过上一篇博文我们知道R-CNN的训练先要fine tuning一个预训练的网络,然后针对每个类别都训练一个SVM分类器,最后还要用regressors对bounding-box进行回归,另外region proposal也要单独用selective search的方式获得,步骤比较繁琐。 时间和内存消耗比较大。在训练SVM和回归的原创 2020-11-11 15:04:32 · 565 阅读 · 0 评论 -
算法详解之RCNN
图像检测流程传统图像检测的基本流程:输入——特征提取(手工/人为计算)——应用机器学习算法进行检测——输出检测结果经典的特征提取算法(Sift/HOG/Fast/Surf/Orb)aaCNN算法进行目标检测:两步检测算法First Trial-RCNN(2014)详细流程:对输入图片进行Extract Region Proposal,即一张图片生成1k~2k个候选区域; 将Region Proposal区域resize成相同大小输入CNN模型提取特征..原创 2020-11-01 15:53:11 · 378 阅读 · 0 评论 -
pytorch入门到放弃4:nn.Module
在pytorch中定义神经网络时,所有的层和损失函数都来自 torch.nn,模型的构建继承的nn.Module,网络的构建一般采用下面的模板(以单个卷积层为例):import torch.nn as nnclass MyNet(nn.Module): def __init__(self, in_channel, out_channel, kernel_size, stride): super(MyNet, self).__init__() self.co原创 2020-10-24 16:50:26 · 160 阅读 · 1 评论 -
pytorch入门到放弃3:Dataset
pytorch为数据的读取和预处理提供了很多工具。其中,torch.utils.data.Dataset是代表这一数据的抽象类,我们可以定义自己的数据class来继承和重写这个抽象类,只需要定义__len__和__getitem__两个函数就行,其中__getitem__包含了数据的读取和处理:from torch.utils.data import Dataset, DataLoaderimport pandas as pdclass MyDataset(Dataset): de原创 2020-10-23 16:42:28 · 259 阅读 · 2 评论 -
pytorch入门到放弃2:Variable
Variable,就是变量的意思,是神经网络计算图里特有的一个概念(在numpy里没有变量的概念),Variable提供了自动求导的功能。Variable和Tensor本质上没有区别,不过Variable会被放到一个计算图中,然后进行前向传播、反向传播、自动求导。Variable是在torch.autograd.Variable中,要将一个tensor 的数据arr转化为Variable很简单,只需要通过Variable(arr)即可。如图,Variable有三个比较重要的组成属性:dat.原创 2020-10-23 14:35:40 · 201 阅读 · 1 评论 -
pytorch入门到放弃1:Tensor
目录一、Tensor(张量)二、Tensor的数据类型一、Tensor(张量)pytorch里面处理的最基本的操作对象就是Tensor(张量),Tensor表示的是一个多维的矩阵,比如零维就是一个点,一维就是向量,两维就是一般的矩阵,多维就相当于一个多维的数据,这个numpy是对应的,并且pytorch的Tensor可以和numpy的ndarray相互转换,区别是pytorch的Tensor可以在GPU上运行,而numpy的bdarray只能在CPU上运行。二、Tensor的数据类.原创 2020-10-15 15:02:04 · 163 阅读 · 0 评论 -
pytorch:读取图像的两种方法
在pytorch实现神经网络的时候需要数据的读取,我们经常采用torch.utils.data.dataset.Dataset,但是在具体的数据读取的时候可以使用opencv或者PIL两种方法,他们在具体的数据处理上也是不一样的。1、使用opencv:# -*- coding: utf-8 -*-import numpy as npimport torchfrom torch.utils.data.dataset import Datasetfrom torch.utils.data.da原创 2020-09-04 15:57:11 · 6307 阅读 · 3 评论 -
pytorch:搭建神经网络的常见方法
使用pytorch搭建神经网络的方法有很多,常见的有四种方法。第一种:这种方法比较早,现在用的很少了,尤其是在复杂的网络中,是直接一层一层的堆起来的,不够模块化,而且不方便扩展,但是对初学者容易理解。 class Net1(torch.nn.Module): def __init__(self): super(Net1, self).__init__() self.conv1 = torch.nn.Conv2d(3, 32, 3, 1, 1)原创 2020-09-03 10:53:36 · 462 阅读 · 0 评论 -
pytorch实现VGG网络
pytorch实现vgg网络:class vgg(nn.Module): def __init__(self, n_class=1000): super(vgg, self).__init__() self.n_class = n_class self.features = nn.Sequential( # conv1 nn.Conv2d(in_channels=3, out_channels=6原创 2020-08-14 15:25:50 · 498 阅读 · 0 评论 -
pytorch搭建网络的几种方法
pytorch搭建网络的几种方法:https://blog.youkuaiyun.com/qq_37385726/article/details/81740233感谢作者转载 2020-08-14 15:22:15 · 342 阅读 · 0 评论 -
将自己的数据转为VOC数据格式
将自己的数据转为VOC数据格式用来目标检测from lxml.etree import Element, SubElement, tostringfrom xml.dom.minidom import parseStringfrom xml.dom.minidom import Documentdef make_xml(infos): for image_id, image_info in infos.items(): image_name = image_info['原创 2020-06-24 17:26:41 · 977 阅读 · 0 评论 -
pytorch中网络参数初始化
可以先定义两个函数:import torch.nn.init as initdef xavier(param): init.xavier_uniform(param) # init.kaiming_uniform_() # 可以选择其他的def weights_init(m): if isinstance(m, nn.Conv2d): xavier(m.weight.data) m.bias.data.zero_()初始化的时原创 2020-06-17 11:39:10 · 729 阅读 · 0 评论 -
国内算法竞赛平台汇总
https://blog.youkuaiyun.com/fahaihappy/article/details/103946259?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase转载 2020-06-08 15:38:25 · 729 阅读 · 0 评论 -
pytorch:读取的图像变换通道
由于读取到的图像是W*H*C 的格式,但是在输入网络的时候要求是C * W * H,因此在输入网络之前需要变换通道,通常采用transpose函数实现:img = .transpose(2, 0, 1)原创 2020-06-04 16:10:04 · 3233 阅读 · 0 评论 -
本地通过tensorboard监控服务器的训练过程
写好训练的代码以后通常在服务器上训练,需要在本地监控训练过程,这是tensorboard是比较好的方法。登录服务器训练时,另开终端,同样登录服务器,执行:tensorboard --logdir ./log --port 5000, port是指定端口,非必须,这时在终端会出现:http://VM_12_14_centos:5000,然后在本地浏览器打开:服务器ip:5000,,如:xxx.xx.xx:5000即可...原创 2020-05-19 16:51:21 · 618 阅读 · 0 评论 -
pytorch系列4:池化层
1、AdaptiveAvgPool1d(N)对一个C*H*W的三维输入Tensor, 池化输出为C*H*N, 即按照H轴逐行对W轴平均池化>>> a = torch.ones(2,3,4)>>> a[0,1,2] = 0>>>> atensor([[[1., 1., 1., 1.], [1., 1., 0...转载 2019-06-01 17:14:53 · 1081 阅读 · 0 评论 -
pytorch系列3:在预训练好的模型上进行微调
在训练网络时经常要进行微调,原来用caffe比较多,相对来说caffe的微调要简单,那么pytorch是怎么实现网络的微调呢,我的方法是:# 导入原来的网络import modules_original# 导入新的网络import modulespre_net = modules_original() # pre_net.load_state_dict(torch.lo...原创 2019-06-01 15:18:39 · 2746 阅读 · 0 评论 -
Pytorch系列1: torch.nn.Sequential()讲解
torch.nn.Sequential是一个Sequential容器,模块将按照构造函数中传递的顺序添加到模块中。通俗的话说,就是根据自己的需求,把不同的函数组合成一个(小的)模块使用或者把组合的模块添加到自己的网络中。主要有两种使用方法:# 第一种方法conv_module = nn.Sequential( nn.Conv2d(1,20,5), n...原创 2019-05-30 20:35:42 · 20717 阅读 · 2 评论 -
Pytorch系列2:实现不同层设置不同的学习率
1、选择要调整的学习率对应的层,这里以conv5为例“net = net()lr = 0.001conv5_params = list(map(id, net.conv5.parameters()))base_params = filter(lambda p: id(p) not in conv5_params, net.parameters...原创 2019-05-17 17:24:08 · 2094 阅读 · 0 评论