Pytorch复习
文章平均质量分 74
DCGJ666
初步进入代码奇妙世界的小白
展开
-
机器学习——PCA与LDA
机器学习——PCA与LDAPCA推导一个PCALDALDA的中心思想是什么LDA的优缺点LDA的步骤推导LDAPCA和LDA有什么区别PCA主成分分析(PCA)是一种多变量统计方法,它是最常用的降维方法之一,通过正交变换将一组可能存在相关性的变量数据转换为一组线性不相关的变量,转换后的变量被称为主成分可以使用两种方法进行PCA,分别是特征分解或奇异值分解(SVD)。PCA旨在找到数据中的主成分,并利用这些主成分表征原始数据,从而达到降维的目的。算法步骤假设有m条n维数据将原始数据按列组成n行m原创 2022-04-17 15:53:24 · 5130 阅读 · 0 评论 -
面试总结之特征工程
面试总结之特征工程特征工程有哪些遇到缺值的情况,有哪些处理方式样本不均衡的处理办法出现Nan的原因特征筛选,怎么找出相似性高的特征并去掉包含百万,上亿特征的数据在深度学习中怎么处理计算特征之间的相关性方法有哪些?特征工程有哪些数据预处理1. 处理缺失值2. 图片数据扩充3. 处理异常值4. 处理类别不平衡问题特征缩放1. 归一化2. 正则化特征编码1. 序号编码2. 独热编码3. 二进制编码4. 离散化特征选择1. 过滤式(filter):先对数据集进行特征选择,其过程与后原创 2022-04-16 11:39:14 · 785 阅读 · 0 评论 -
PyTorch 21. PyTorch中nn.Embedding模块
PyTorch 21. PyTorch中nn.Embedding模块torch.nn.Embeddingtorch.nn.Embedding函数:torch.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None, max_norm=None, norm_type=2, scale_grad_by_freq=False, sparse=False)参数解释:num_embeddings: 查询表的大小embedding_dim原创 2021-12-25 10:59:12 · 220 阅读 · 0 评论 -
torch.where能否传递梯度
**torch.where(conditions,x,y)**可以传递梯度**tensor.where(conditions)**不能传递梯度,是非差分函数原创 2021-12-21 21:54:54 · 1130 阅读 · 0 评论 -
torch.where能否传递梯度
**torch.where(conditions,x,y)**可以传递梯度**tensor.where(conditions)**不能传递梯度,是非差分函数原创 2021-12-21 21:53:07 · 1280 阅读 · 1 评论 -
PyTorch 22. PyTorch常用代码段合集
PyTorch常用代码段合集导入包和版本查询可复现性显卡设置张量处理张量的数据类型张量基本信息命名张量数据类型转换torch.Tensor与np.ndarray转换Torch.tensor与PIL.Image转换从只包含一个元素的张量中提取值张量形变打乱顺序复制张量得到非零元素判断两个张量相等张量扩展多卡同步BN(Batch normalization)将已有网络的所有BN层改为同步BN层计算模型整体参数量导入另一个模型的相同部分到新的模型其他注意事项参考: https://zhuanlan.zhihu.原创 2021-12-17 14:38:29 · 876 阅读 · 0 评论 -
PyTorch 20. PyTorch技巧(持续更新)
PyTorch技巧(持续更新)查看模型每层输出详情梯度裁剪(Gradient Clipping)扩展单张图片的维度view()实现np.newaxis实现unsqueeze()实现独热编码防止验证模型时爆显存监控工具显存占用冻结某些层的参数对不同层使用不同学习率查看模型每层输出详情from torchsummary import summarysummary(your_model, input_size=(channels, H, W))input_size是根据自己的网络模型的输入尺寸进行设置原创 2021-12-15 20:32:40 · 1998 阅读 · 0 评论 -
PyTorch 19. PyTorch中相似操作的区别与联系
PyTorch 19. PyTorch中相似操作的区别与联系view() 和 reshape()总结expand()和repeat()expand()repeat()乘法操作二维矩阵乘法 torch.mm()三维带batch的矩阵乘法torch.bmm()多维矩阵乘法 torch.matmul()view() 和 reshape()写在开头:有一篇大佬的总结非常到位:博客总结view() 在操作tensor时,需要tensor是内存连续的,而且在进行尺寸变换时,view()操作不会新开辟内存空间原创 2021-12-09 11:47:23 · 1027 阅读 · 0 评论 -
PyTorch 18. torch.backends.cudnn
PyTorch 18. torch.backends.cudnn写在开头准则背景知识cuDNN卷积运算torch.backends.cudnn.benchmark放置位置写在开头torch.backends.cudnn.benchmark=True当该参数设为True时,网络会在初始时寻找最适合当前网络操作的卷积计算方法,能够提高网络的训练效率;但是当输入图像尺寸不断发生变化时,采用该参数会减慢网络训练速度。准则如果网络的输入数据维度或类型上变化不大(也就是对输入数据初始化时同一数据尺寸),设置原创 2021-12-08 11:23:45 · 491 阅读 · 0 评论 -
PyTorch 17. GPU并发
GPU并发多GPU运算的分发并行机制torch.nn.DataParallel使用torch.distributed加速并行训练:使用方式初始化Dataloader模型的初始化同步BN多机多卡DDP(DistributedDataParallel)使用apex加速(混合精度训练,并行训练,同步BN):apex的使用Amp:Automatic Mixed PrecisionDistributed TrainingSynchronized Batch NormalizationCheckpointing多GP原创 2021-12-06 13:32:53 · 2031 阅读 · 0 评论 -
PyTorch 15.深度学习中常见的python操作
PyTorch 15.深度学习中常见的python操作Pickle模块Python调试器pdb单步执行模式单刀直入Pickle模块说明:Python中的pickle模块实现了基本的数据序列与反序列化,序列化对象可以在磁盘上保存对象,并在需要的时候读取出来。任何对象都可以执行序列化操作。dump()方法pickle.dump(obj, file, [,protocol])参数定义:obj:序列化对象,将对象obj保存到文件file中去file:file表示保存到的类文件对象,file必须有wr原创 2021-12-05 12:14:58 · 1129 阅读 · 0 评论 -
PyTorch 14. module类
PyTorch 14. module类module类module类的定义:torch.nn.Module类的多种实现children和modules之间的差异性module类pytorch中其实一般没有特别明显的Layer和Module的区别,不管是自定义层、自定义块、自定义模型,都是通过继承Module类完成的,其实Sequential类也是继承Module类。module类的定义:class Module(object): def __init__(self): def forward(se原创 2021-12-04 14:17:39 · 671 阅读 · 0 评论 -
PyTorch 13. 嵌套函数和闭包(狗头)
PyTorch 13. 嵌套函数和闭包(狗头)嵌套函数闭包嵌套函数python允许在函数里定义函数,而且现有的作用域和变量生存周期依旧不变。def A(): name='mysql' def A_children(): #outer函数内部定义的函数 print name return A_children() #返回该内部函数A()理解:在A的嵌套函数中,python解释器需要找一个叫name的本地变量,查找失败后会继续在上层的作用域(即,外部函数中)寻找。对于A函数中最后一句原创 2021-12-03 21:32:06 · 302 阅读 · 0 评论 -
PyTorch 12. hook的用法
PyTorch 12. hook的用法hookregister_hookregister_forward_hookregister_backward_hookhook由于pytorch会自动舍弃图计算的中间结果,所以想要这些数值就需要使用钩子函数。钩子函数包括Variable的钩子和nn.Module钩子,用法相似。在使用hook函数时,不应该修改它的输入,但是它可以返回一个替代当前梯度的新梯度,即,使用该函数会返回一个梯度值register_hook针对Tensor变量的hook函数imp原创 2021-11-30 17:46:47 · 1177 阅读 · 0 评论 -
PyTorch 11.正则化
PyTorch 11.正则化正则化正则化正则化即表示减少数据方差的策略误差可分解为:偏差,方差与噪声之和。即误差=偏差+方差+噪声偏差:度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力。方差:度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。噪声:表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界。nn.Dropout减轻神经元对某个特征的过度依赖,减少过拟合。随机:dropout probability失活:wei原创 2021-11-29 22:20:21 · 666 阅读 · 0 评论 -
PyTorch 10. 学习率
PyTorch 10. 学习率schedulerStepLRMultiStepLRExponentialLRCosineAnnealingLRReduceLRonPlateauschedulerscheduler:必须关联一个优化器去调整其学习率class _LRScheduler(object): def __init__(self, optimizer, last_epoch=-1): pass def get_lr(self): return [base_lr * self.gamm原创 2021-11-28 12:41:11 · 878 阅读 · 0 评论 -
PyTorch 9. 优化器
PyTorch 9. 优化器优化器优化器pytorch优化器:管理并更新模型中可学习参数的值,使得模型输出更接近真实标签基本属性:defaults: 优化器超参数state: 参数的缓存,如momentum的缓存param_groups: 管理的参数组_step_count:记录更新次数,学习率调整中使用操作:zero_grad():清空所管理参数的梯度step():执行一步更新add_param_group():添加参数组state_dict():获取优化器当前状态信息字典loa原创 2021-11-26 23:39:48 · 842 阅读 · 0 评论 -
PyTorch 8.权值初始化与损失函数
PyTorch 8.权值初始化与损失函数权值初始化损失函数权值初始化举个例子,若随机变X与Y相互独立,且其均值为0,方差为1则有:D(XY)=D(X)D(Y)+D(X)E(Y)2+D(Y)E(X)2=D(X)D(Y)D(XY)=D(X)D(Y)+D(X)E(Y)^2+D(Y)E(X)^2=D(X)D(Y)D(XY)=D(X)D(Y)+D(X)E(Y)2+D(Y)E(X)2=D(X)D(Y)那么有:H11=∑i=0nXi∗W1iH_{11}=\sum^n_{i=0}X_i*W_{1i}H11=∑原创 2021-11-25 20:49:02 · 662 阅读 · 0 评论 -
PyTorch 7.保存和加载pytorch模型的方法
PyTorch 7.保存和加载pytorch模型的方法保存和加载模型保存和加载模型python的对象都可以通过torch.save和torch.load函数进行保存和加载x1 = {"d":"df","dd":"ddf"}torch.save(x1,'a1.pt')x2 = torch.load('a1.pt')下面来谈模型的state_dict(),该函数返回模型的所有参数class MLP(nn.Module): def __init__(self): super(MLP,self原创 2021-11-23 16:53:02 · 1301 阅读 · 0 评论 -
PyTorch 6.模型创建步骤
模型创建步骤torch.nnnn.Moduletorch.nnnn.Parameter张量子类,表示可学习参数,如weight,biasnn.Module所有网络层基类,管理网络属性、nn.functional函数具体实现,如卷积,池化,激活函数等nn.init参数初始化parameters:存储管理nn.Parameters类modules: 存储管理nn.Module类buffers:存储管理缓冲属性,如BN层中的running_mean_hooks:存储管理钩子函数nn原创 2021-11-22 21:52:13 · 865 阅读 · 0 评论 -
PyTorch 5. Transform预处理
PyTorch 5. Transform预处理常用数据处理方法常用数据处理方法torchvision.transforms:常用的图像预处理方法数据中心化数据标准化缩放裁剪旋转翻转填充噪声添加灰度变换线性变换仿射变换亮度、饱和度及对比度变换RandomCrop功能:依据给定的size随机裁剪参数:size(sequence or int)若为sequence,则为(h,w),若为int,则(size,size)padding-(sequence or int, op原创 2021-11-22 21:41:29 · 2197 阅读 · 0 评论 -
PyTorch 4.DataLoader与Dataset
PyTorch 4.DataLoader与Datasettorch.utils.data.DataLoadertorch.utils.data.Datasettorch.utils.data.DataLoaderDataLoader( dataset, batch_size=1, shuffle=False, sampler=None, batch_sampler=None, num_workers=0, collate_fn=None, pin_memo原创 2021-11-21 14:27:53 · 784 阅读 · 0 评论 -
PyTorch 3. autograd
PyTorch 3. autogradautogradauto_grad具体操作推理环节tensor.dataautograd.grad和hook扩展autogradautograd动态图:运算与搭建同时进行静态图:先搭建图,后运算计算图只能backward一次,若想再次使用则必须设置retain_graph=Truetorch.autograd.grad(outputs, inputs, grad_outputs=None, retain_graph=None,原创 2021-11-20 18:53:46 · 476 阅读 · 0 评论 -
PyTorch 2.张量操作
PyTorch 2.张量操作张量拼接张量切分张量索引张量变换张量拼接torch.cat(tensors, dim=0, out=None)功能:将张量按维度dim进行拼接,不创建新的维度tensors:张量序列dim:要拼接的维度torch.stack(tensors, dim=0, out=None)功能:在新创建的维度dim上进行拼接,创建新的维度tensors:张量序列dim:要拼接的维度张量切分torch.chunk(input, chunks原创 2021-11-19 23:31:45 · 169 阅读 · 0 评论 -
Pytorch 1.张量简介与创建
文章目录torch.autograd.Variabletorch.TensorTensor的创建方法:torch.autograd.VariableVariable是torch.autograd中的数据类型,主要用于封装Tensor,进行自动求导data: 被包装的Tensorgrad: data的梯度grad_fn: 创建Tensor的Function,是自动求导的关键requires_grad: 指示是否需要梯度is_leaf: 指示是否是叶子节点torch.Tensor从Pyto原创 2021-11-18 22:48:19 · 899 阅读 · 0 评论