- 博客(26)
- 收藏
- 关注
原创 深度学习中的归纳性偏好
深度学习的归纳性偏好介绍1.CNN inductive bias2. RNN inductive bias3. GNN inductive bias4.Attention bias介绍学习的方法会对学习的问题做一些关于目标函数的必要假设,称为归纳偏置。西瓜书解释:机器学习算法在学习过程中对某种类型假设的偏好,称为归纳性偏好。归纳性偏好可以看作是学习算法自身在一个庞大的假设空间中对假设进行选择的启发式价值观。深度神经网络偏好的认为层次化处理信息有更好的效果。网络越深效果越好。1.CNN induct
2022-04-11 16:07:58
1214
原创 数据增强---Mixup和Cutmix
数据增强---Mixup介绍1.Mixup2.Cutmix介绍1.Mixup是一种运用在计算机视觉中的对图像进行混类增强的算法,它可以将不同类之间的图像进行混合,从而扩充训练数据集。论文:https://arxiv.org/abs/1710.09412源码:https://github.com/facebookresearch/mixup-cifar10mixup就是选两个不同batch的样本按照一定的权重合成一个新的样本和标签使用方法from timm.data import Mixup
2022-04-11 10:26:36
2580
原创 理解Python Container(容器)、可迭代对象(iterable)、迭代器(iterable)、生成器(generator)
@[TOC](理解Python Container(容器)、可迭代对象(iterable)、迭代器(iterable)、生成器(generator))首先通过一张图来进行理解:1.容器容器你可以把它看作存储糖果的罐子,糖果就是罐子里面的元素。所有的容器都放在一个存储室(内存)中。一些常见的容器:list, deque.....set,frozensets,....dict, defaultdict, OrderedDict, Counter, .....tuple, namedtuple,.
2022-04-11 09:50:54
1068
原创 Python islice()
@[TOC](Python islice())islice()获取迭代器的切片,islice(iterable, start, stop, step)示例:from itertools import islicefor i in islice(range(10),0,8,2): print(i)li = [1,2,3,4,5,6,7,8]print(list(islice(li, 1,6,3)))"""0246[2, 5]"""li = [1,2,3,4,5,6
2022-04-10 21:49:08
914
原创 Python typing Optional
Optional介绍介绍可选参数具有默认值,具有默认值的可选参数不需要在其类型批注上使用Optional,因为它是可选的。Optinal和默认参数没什么实质性的区别,只是写法不同,使用Optional主要是为了让IDE识别到该参数有一个类型提示,可以指定它的类型和None,参数是可选非必传from typing import Optionaldef Test(arg:Optional[int]=None): print(arg) Test()Test(1)"""N
2022-04-10 20:38:31
1272
原创 Python 中的*args和**kwargs
Python 中的*args和**kwargsargs:arguments的缩写,表示位置参数kwargs:是keyword arguments的缩写,表示关键字参数。这其实就是python中的可变参数的两种形式,并且*args必须放在**kwargs前面。*args:def Test(arg1, *args): print("required argument:",arg1) print(type(*args)) for c in args: print('
2022-04-09 23:00:55
175
原创 Python pathlib Path
Python pathlib Path这个module提供一个类来表示不同文件系统的路径, pure paths,代表非实体路径,不进行I/O操作, concrete paths继承 pure paths 但是也可以进行I/O操作。基本使用示例:from pathlib import Path#Listing subdirectories:p = Path('.')[x for x in p.iterdir() if x.is_dir()]"""[PosixPath('.ipynb_ch
2022-04-09 22:36:11
542
原创 torch.nn.utils.clip_grad_norm_ 梯度裁剪
Pytorch 梯度裁剪介绍介绍直接看源代码吧,源代码比较简单def clip_grad_norm_( parameters: _tensor_or_tensors, max_norm: float, norm_type: float = 2.0, error_if_nonfinite: bool = False) -> torch.Tensor: r"""Clips gradient norm of an iterable of parameters.
2022-04-09 21:51:33
1174
1
原创 Pytorch torch.cuda.amp 自动混合精度
自动混合精度Pytorch的自动混合精度是由torch.cuda.amp模块带来的from torch.cuda.amp import autocast as autocastPytorch的amp模块里面有两种精度的Tensor,torch.FloatTensor和torch.HalfTensor。torch.cuda.amp只能在cuda上使用,这个功能正是NVIDIA的开发人员贡献到Pytorch项目中的。而只有支持Tensor core的CUDA硬件才能享受到AMP的好处(例如:2080Ti
2022-04-09 20:23:36
1583
原创 Pytorch模型训练中 使用的 MetricLogger类总结
MetricLogger类这个类主要用来打印输出训练的时候产生的一些数据首先搬出我们看到的源代码,主要是在看何凯明大佬的MAE项目代码的时候遇到了,一起来学习一下~~MAE-github官方源代码:https://github.com/facebookresearch/mae源代码:class SmoothedValue(object): """Track a series of values and provide access to smoothed values over a
2022-04-09 19:00:26
6937
3
原创 Python __getattr__、__setattr__、__delattr__
Python __getattr__1.__ getattr __2 __ setattr __3. __ delattr __1.__ getattr __当我们访问一个不存在的属性的时候,会抛出异常,提示我们不存在这个属性。一般访问属性异常就是__getattr__方法抛出的。例子:class A(object): def __init__(self, value): self.value=value def __getattr__(self, item):
2022-04-09 15:42:29
425
原创 torch.distributed.barrier()
torch.distributed.barrier作用Pytorch在分布式训练过程中,对于数据的读取是采用主进程预读取并缓存,然后其它进程从缓存中读取,不同进程之间的同步通信需要通过torch.distributed.barrier()实现t = torch.tensor([self.count, self.total], dtype=torch.float64, device='cuda')dist.barrier()dist.all_reduce(t)主要就是通过对其他进程进行阻塞来等所有
2022-04-09 11:28:25
6760
原创 torch.nn.parameter.Parameter
torch.nn.parameter.Parameter介绍介绍Parameter是张量tensor的一个子类:class Parameter(torch.Tensor)一般是在需要用户自己创建一些张量加到模型的学习模块里面去学习,比如在注意力机制里面,我们一般可以加入可学习的位置编码pos_emb = torch.rand(1,num_patch,dim)pos_emb = torch.nn.parameter.Parameter(pos_emb, requires_grad=True)
2022-04-09 11:14:06
675
1
原创 Pytorch 多GPU训练
Pytorch 多GPU训练介绍使用1.1 torch.nn.DataParallel1.2 torch.nn.parallel.DistributedDataParallel介绍Pytorch 的分布式训练主要是使用torch.distributed来实现的,它主要由三个组件构成:1.Distributed Data-Parallel Training(DDP):它是一个single-program和multi-process。使用DDP组件的时候,模型被复制到每一个进程也就是GPU里面,每个mod
2022-04-09 11:01:44
5263
原创 Pytorch 按层调整学习率
Pytorch 按层调整学习率第一步:先获取每一层的一个layer_scalelayer_scales = list(layer_decay ** (num_layers - i) for i in range(num_layers + 1))第二步:把
2022-04-08 19:31:15
1517
1
原创 python defaultdict
Defaultdict in Python介绍介绍在python里面,普通字典都是无序的,并且里面的元素都是独一无二的,一般情况下,我们使用字典的格式:关键字必须是不变的类型,比如python的列表类型就不能是关键字,而tuple可以是关键字dict1 = {'a':1,'b':2,'e':3,'d':4}dict2 = {1:'a',2:[1,2],(1,2):'y'}dict3 = {1:1, 2:4, 3:9}print(dict1['b'])print(dict2[2])print
2022-04-08 16:28:12
461
原创 torch.optim.Optimizer
torch.optim.Optimizer base class 理解torch.optim.Optimizer参数理解.params.defaults类的属性类的方法1.Optimizer.state_dict2.Optimizer.load_state_dict3. Optimizer.zero_grad3. Optimizer.add_param_group(self, param_group)torch.optim.Optimizertorch.optim.Optimizer(params, d
2022-04-08 10:15:19
1904
原创 Pytorch is_leaf 叶子张量
pytorch的叶子张量理解什么是叶子张量什么是叶子张量每个张量都有一个is_leaf属性用来判断是否为叶子节点只有当requires_grad=True时我们才会记录该tensor的运算过程,并且为自动求导做准备,但是除了叶子张量可以有tensor.grad外,其他非叶子节点得不到反向传播时计算的grad为什么需要两个条件来确定是否获取grad?基本逻辑:首先通过requires_grad判断是否为计算该节点梯度记录关于该节点计算梯度的信息,第二步就是判断是否为叶子节点来确定是否保留计算的gr
2022-04-08 10:06:40
882
原创 Python chain.from_iterable()
chain.from_iterable第一次见这个函数是在看torch.optim.Optimizer这个类的load_state_dict()方法源码# Update the stateid_map = {old_id: p for old_id, p in zip(chain.from_iterable((g['params'] for g in saved_groups)), chain.from_iterable((g['params'] for g in groups)))
2022-04-07 22:30:23
677
原创 timm.data.create_transform
timm.data.create_transformcreate_transform1.源码阅读2.源码理解**2.1 transforms_imagenet_train**2.1.12.1.22.1.3 最后的步骤create_transform1.源码阅读def create_transform( input_size, is_training=False, use_prefetcher=False, no_aug=False,
2022-04-07 15:38:59
4073
1
原创 图像缩放的插值方法总结
图像缩放的插值方法总结几种常见插值方式1.代码示例2.结果:几种常见插值方式NEAREST = "nearest"BILINEAR = "bilinear"BICUBIC = "bicubic"# For PIL compatibilityBOX = "box"HAMMING = "hamming"LANCZOS = "lanczos"1.代码示例以torchvision.transforms.functional.resize()为例进行分析:import torchvision.
2022-04-07 12:10:39
2178
原创 pytorch 源代码实现 PIL.image、Tensor 、numpy数据类型之间的转换
pytorch 源代码实现 PIL.image、Tensor 、numpy数据类型之间的转换class ToTensor1.源码阅读:class ToTensor2.源码阅读:to_tensor()2.1源码理解:2.1.1 handle numpy array2.1.2 handle accimage.Image2.1.3 handle PIL Imageclass PILtoTensor1. 源码阅读:class PILToTensor2. 源码阅读: F.pil_to_tensor(pic)class
2022-04-07 11:00:34
1974
原创 PIL.image数据转换为Numpy和Tensor
PIL.image数据转换为Numpy和Tensorimport numpy as np from PIL import Imageimport torch ##PIL.Imagepil_img = Image.open('./dog.jpg').convert('RGB')print(type(pil_img))##<class 'PIL.Image.Image'>## ToNumpynp_img = np.array(pil_img, dtype=np.uint8)
2022-04-07 09:48:38
4285
原创 timm.data-------tf_processing
timm.data-------tf_processing模块函数理解distorted_bounding_box_crop1.源码阅读2.参数理解_decode_and_random_crop1.源码阅读_decode_and_center_crop1. 源码阅读preprocess_for_train1.源码阅读preprocess_for_eval1.源码阅读class TfPreprocessTransform:1.源码阅读模块函数理解distorted_bounding_box_crop1.
2022-04-07 09:06:26
535
原创 torchvision.transform.RandomResizedCrop
torchvision.transform.RandomResizedCrop
2022-04-06 19:13:18
1451
原创 python的builtins模块
python的builtins模块builtins模块详解1.介绍1.1 builtins: python内建模块1.2 builtins 与 __builtins__的区别.在__main__模块中.在非__main__模块中2.示例代码结果builtins模块详解1.介绍1.1 builtins: python内建模块内建模块就是在使用的时候不需要进行import, 在python启动之后,在没有执行程序员编写的任何代码之前,python会加载内建模块中函数到内存(python的内建函数,例如:
2022-04-06 16:15:27
4532
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人