PyTorch学习笔记
TongYixuan_LUT
这个作者很懒,什么都没留下…
展开
-
PyTorch学习笔记(33)RNN
RNNRNN 循环神经网络-处理不定长输入的模型-常用于NLP及时间序列任务(输入数据具有前后关系)RNN网络结构xt:时刻t的输入,shape = (1,57)st:时刻t的状态值,shape = (1,128)ot:时刻t的输出值,shape = (1,57)U:linear层的权重参数,shape = (128,57)W:linear层的权重参数,shape = (128...原创 2020-03-28 22:38:40 · 173 阅读 · 0 评论 -
PyTorch学习笔记(32)pytorch常见报错信息
pytorch常见报错信息1.报错:ValueError: num_samples should be a positive integer value, but got num_samples=0可能的原因:传入的Dataset中的len(self.data_info)==0,即传入该dataloader的dataset里没有数据解决方法:检查dataset中的路径,路径不对,读取...原创 2020-03-05 16:58:06 · 3646 阅读 · 0 评论 -
PyTorch学习笔记(31) GPU的使用
GPU的使用CPU (Central Processing Unit ,中央处理器) 主要包括控制器和运算器GPU (Graphics Processing Unit ,图形处理器) 处理统一的,无依赖的大规模数据运算数据迁移在pytorch中,采用to函数data.to(“cuda”) data.to(“cpu”)data:1.Tensor2.Moduleto函数:转换数据类...原创 2020-03-05 15:06:52 · 418 阅读 · 0 评论 -
PyTorch学习笔记(30) 模型微调(Finetune)
模型微调(Finetune)Transfer Learning :机器学习分值,研究 源域(source domain) 的知识如何应用到目标域(target domain)Model Finetune: 模型的迁移学习模型微调步骤:1.获取预训练模型参数2.加载模型(load_state_dict)3.修改输出层模型微调训练方法1.固定预训练的参数(requires_grad =...原创 2020-03-04 16:04:51 · 541 阅读 · 0 评论 -
PyTorch学习笔记(29) 模型的保存与加载
序列化 和 反序列化是指内存和硬盘之间的数据转换关系序列化 就是指把数据从内存上转到硬盘上的过程反序列化 就是指把数据从硬盘上转到内存上的过程1.torch.save主要参数obj 对象f 输出路径2.torch.load主要蚕食f 文件路径map_location 指定存放位置 cpu or gpu方法1 保存整个Moduletorch.save(net,path)方...原创 2020-03-04 14:15:21 · 330 阅读 · 0 评论 -
PyTorch学习笔记(28) BN LN IN GN
Why NormalizationInternal Covariate Shift(ICS):数据尺度/分布异常,导致训练困难H11=∑i=0nXi∗W1iD(H11)=∑i=0nD(Xi)∗D(W1i)=n∗(1∗1)=n\begin{aligned}\mathrm{H}_{11}=& \sum_{i=0}^{n} X_{i} * W_{1 i} \\\mathrm{D}\le...原创 2020-03-04 10:57:57 · 390 阅读 · 0 评论 -
PyTorch学习笔记(27) Batch Normalization
Batch NormalizationBatch Normalization : 批标准化批:一批数据,通常为mini-batch标准化:0均值,1方差优点:1.可以用更大学习率,加速模型收敛2.可以不用精心设计权值初始化3.可以不用dropout或较小的dropout4.可以不用L2或者较小的weight decay5.可以不用LRN(local response normal...原创 2020-03-03 22:16:39 · 214 阅读 · 0 评论 -
PyTorch学习笔记(26) 正则化 Dropout
Dropout:随机失活一定的概率 使神经元失去活性(权重=0)随机: dropout probability失活: weight = 0数据尺度变化:测试时,所有权重乘以 1-drop_probdrop_prob = 0.3 1-drop_prob = 0.7nn.Dropout功能 Dropout层参数p:被舍弃概率,失活概率实现细节训练时权重均乘以11−p\fra...原创 2020-03-03 14:15:29 · 228 阅读 · 0 评论 -
PyTorch学习笔记(25) 正则化 weight_decay
Regularzation 正则化Regularzation:减小方差的策略误差可分解为:偏差,方差与噪声之和。即 误差 = 偏差 + 方差 + 噪声 之和偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界损失...原创 2020-03-02 21:59:34 · 4453 阅读 · 2 评论 -
PyTorch学习笔记(24)Hook函数与CAM算法
Hook函数与CAM算法Hook FunctionHook函数机制:不改变主体,实现额外功能,像一个挂件,挂钩,hook1.torch.Tensor.register_hook(hook)功能 注册一个反向传播hook函数Hook函数仅一个输入参数,为张量的梯度2.torch.nn.Module.register_forward_hood功能 注册module 的前向传播hook 函...原创 2020-03-02 15:02:22 · 448 阅读 · 0 评论 -
PyTorch学习笔记(23)TensorBoard(三)
SummaryWriter4.add_image()功能 记录图像tag 图像的标签名,图的唯一标识img_tensor 图像数据,注意尺度global_step x轴dataformats 数据形式 CHW HWC HWtorchvision.utils.make_grid功能 制作网格图像tensor 图像数据 BCH*W 形式nrow 行数(列数自动计算)padding...原创 2020-03-01 21:13:24 · 288 阅读 · 0 评论 -
PyTorch学习笔记(22)TensorBoard(二)
TensorBoardSummaryWriter功能 提供创建event file 的高级接口主要属性log_dir event file输出文件夹comment 不指定log_dir时,文件夹后缀filename_suffix event file 文件名后缀1.add_scalar()功能 记录标量tag 图像的标签名,图的唯一标识scalar_value 要记录的标量...原创 2020-03-01 15:43:29 · 230 阅读 · 0 评论 -
PyTorch学习笔记(21)TensorBoard(一)
TensorBoardTensorBoard : TensorFlow中强大的可视化工具支持标量、图像、文本、音频、视频和Embedding等多种数据可视化记录可视化的数据到硬盘中 以events.out.tfevents 的文件格式存在import numpy as npfrom torch.utils.tensorboard import SummaryWriter# 记录需要可...原创 2020-02-29 20:19:05 · 150 阅读 · 0 评论 -
PyTorch学习笔记(20)学习率调整策略
学习率调整学习率(learning rate)控制更新的步伐学习率调整class_LRScheduler主要属性optimizer 关联的优化器last_epoch 记录epoch数base_lrs 记录初始学习率主要方法step() 更新下一个epoch的学习率get_lr() 虚函数,计算下一个epoch的学习率1.StepLR功能 等间隔调整学习率主要参数step...原创 2020-02-29 16:38:53 · 329 阅读 · 0 评论 -
PyTorch学习笔记(19)优化器(二)
学习率梯度下降wi+1=wi−g(wi)\boldsymbol{w}_{\boldsymbol{i}+\mathbf{1}}=\boldsymbol{w}_{\boldsymbol{i}}-\boldsymbol{g}\left(\boldsymbol{w}_{\boldsymbol{i}}\right)wi+1=wi−g(wi)wi+1=wi−LR∗g(wi)\boldsymbol...原创 2020-02-28 15:33:03 · 135 阅读 · 0 评论 -
PyTorch学习笔记(18)优化器(一)
优化器pytorch的优化器:管理并更新模型中科学系参数的值,使得模型输出更接近真实标签导数:函数在制定坐标轴上的变化方向导数:指定方向上的变化率梯度:一个向量,方向为方向导数取得最大值的方向基本属性defaults 优化器超参数state 参数的缓存 如momentum的缓存pram_groups 管理的参数组_step_count 记录更新次数,学习率调整中使用基本方法z...原创 2020-02-28 14:08:08 · 204 阅读 · 0 评论 -
PyTorch学习笔记(17)损失函数(二)
损失函数nn.L2Loss功能 计算inputs 与 target 之差的绝对值ln=∣xn−yn∣l_{n}=\left|x_{n}-y_{n}\right|ln=∣xn−yn∣nn.MSELoss功能 计算inputs 与 target 之差的平方ln=(xn−yn)2l_{n}=\left(x_{n}-y_{n}\right)^{2}ln=(xn−yn)2主要参...原创 2020-02-27 21:53:18 · 533 阅读 · 0 评论 -
PyTorch学习笔记(16)损失函数(一)
损失函数损失函数:衡量模型输出与真实标签的诧异损失函数(Loss Function):计算一个样本的差异 Loss =f(y∧,y)\text { Loss }=f\left(y^{\wedge}, y\right) Loss =f(y∧,y)代价函数(Cost Function)计算整个样本集的loss的平均值cost=1N∑iNf(yi∧...原创 2020-02-27 19:10:40 · 429 阅读 · 0 评论 -
PyTorch学习笔记(15)权值初始化
两个相互独立的随机变量乘积的期望 等于 他们各自期望的乘积 1. E(X∗Y)=E(X)∗E(Y)\text { 1. } \mathrm{E}(\boldsymbol{X} * \boldsymbol{Y})=\boldsymbol{E}(\boldsymbol{X}) * \boldsymbol{E}(\boldsymbol{Y}) 1. E(X∗Y)...原创 2020-02-26 21:24:36 · 511 阅读 · 0 评论 -
PyTorch学习笔记(14)池化 线性 激活函数
池化、线性、激活函数池化层 Pooling Layer池化运算:对信号进行“收集”并“总结”,类似水池收集水资源,因而得名池化层“收集”:多变少“总结”:选取最大值或平均值nn.MaxPool2d功能 对二维信号(图像)进行最大值池化主要参数kernel_size 池化核尺寸stride 步长padding 填充个数dilat...原创 2020-02-26 14:16:22 · 1212 阅读 · 0 评论 -
PyTorch学习笔记(13)卷积
卷积卷积运算:卷积核在输入信号(图像)上滑动,相应位置上进行乘加卷积核:又称为滤波器,过滤器,可认为是某种模式,某种特征卷积过程类似于一个模板去图像上寻找与它相似的区域,与卷积核模式越相似,激活值越高,从而实现特征提取AlexNet 卷积核可视化,发现卷积核学习到的是边缘,条纹,色彩这些细节模式卷积维度:一般情况下,卷积核在几个维度上滑动,就是几维卷积nn.Conv2d功能:对多个二...原创 2020-02-25 14:30:16 · 190 阅读 · 0 评论 -
PyTorch学习笔记(12)模型容器
containers包含 nn.Sequetial 按顺序包装多个网络层nn.ModuleList 像python的list一样包装多个网络层nn.ModuleDict 像python的dict一样包装多个网络层nn.Sequetial 是nn.module 的容器,用于按顺序包装一组网络层Sequential 两个特性顺序性 各网络层之间严格按照顺序构建自带forward(...原创 2020-02-24 19:46:48 · 192 阅读 · 0 评论 -
PyTorch学习笔记(11)模型构建
模型的创建 和 nn.model模型分为 模型创建 和 权值初始化模型创建 分为 构建网络层(卷积层,池化层,激活函数层)拼接网络层(LeNet,AlexNet,ResNet等)权值初始化 Xavier,Kaiming,均匀分布,正态分布模型构建两要素构建子模块 init()拼接子模块 forward()# -*- coding: utf-8 -*-import osim...原创 2020-02-24 12:51:33 · 167 阅读 · 0 评论 -
PyTorch学习笔记(10)transforms(4)
自定义transforms自定义transforms要素仅接收一个参数,返回一个参数2.注意上下游的输出与输入通过类实现多参数传入:class YourTransforms(object): def __init__(self,...): ... def __call__(self, img): ... ret...原创 2020-02-22 22:50:42 · 202 阅读 · 0 评论 -
PyTorch学习笔记(9)transforms(3)
Pad功能 对图片边缘进行填充padding 设置填充大小当为a时,上下左右均填充a个像素当为(a,b)时,上下填充b个像素,左右填充a个像素当为(a,b,c,d)时,左,上,右,下分别填充a,b,c,d,padding_mode 填充模式 有四种模式 constant,edge,reflect,symmetricfill constant时,设置填充的像素值(R,G,B)Colo...原创 2020-02-22 22:22:31 · 510 阅读 · 0 评论 -
PyTorch学习笔记(8)transforms(2)
数据增强数据增强又称为数据增光,数据扩增,它是对训练集进行变换,使训练集更丰富,从而让模型更具泛化能力transforms Croptransforms.CenterCrop功能:从图像中心裁剪图片size 所需裁剪图片尺寸transforms.RandomCrop功能 从图片中随机裁剪出尺寸为size的图片 随机 是指位置上的随机size 所需裁剪图片尺寸padding 设置...原创 2020-02-22 15:48:36 · 266 阅读 · 0 评论 -
PyTorch学习笔记(7)transforms(1)
torchvision.transforms 常用的图形预处理方法数据中心化数据标准化缩放 裁剪 旋转 翻转 填充噪声添加灰度变化 线性变换 仿射变换亮度、饱和度、对比度变换transforms.Normalize功能 逐channel的对图像进行标准化将数据分布的均值变为0 将标准差变为1output = (input - mean) / std(input - 均值) 除...原创 2020-02-21 16:01:39 · 115 阅读 · 0 评论 -
PyTorch学习笔记(6)逻辑回顾LR
线性回归是分析自变量x与因变量y(标量)之间关系的方法逻辑回归是分析自变量x与因变量y(概率)之间关系的方法机器学习模型训练步骤数据 模型 损失函数 优化器 迭代训练过程import torchimport torch.nn as nnimport matplotlib.pyplot as pltimport numpy as np# 生成数据sample_nums = 1...原创 2020-02-21 15:59:42 · 233 阅读 · 0 评论 -
PyTorch学习笔记(5)Dataloader与Dataset(2)
人民币识别split_datasetimport osimport randomimport shutildef makedir(new_dir): if not os.path.exists(new_dir): os.makedirs(new_dir)if __name__ == '__main__': random.seed(1) ...原创 2020-02-20 17:47:57 · 334 阅读 · 0 评论 -
PyTorch学习笔记(4)Dataloader与Dataset(1)
torch.utils.data.DataLoaderdataset Dataset类决定数据从哪读取及如何读取batchsize 批大小num_works 是否多进程读取数据shuffle 每个epoch 是否乱序drop_last 当样本数不能被batchsize整除时,是否舍弃最后一批数据Epoch 所有训练样本都已输入到模型中,成为一个EpochIteration 一批样本...原创 2020-02-20 17:41:53 · 172 阅读 · 1 评论 -
PyTorch学习笔记(3)autograd 自动求导
自动求导torch.autograd.backward自动求取梯度tensors 用于求导的张量retain_graph 保存计算图create_graph 创建导数计算图 用于高阶求导grad_tensors 多梯度权重flag = True# flag = Falseif flag: # requires_grad 要求梯度 w = torch.tensor(...原创 2020-02-20 17:38:11 · 466 阅读 · 0 评论 -
PyTorch学习笔记(2)计算图
计算图是用来描述运算的有向无环图两个主要元素 结点Node 边 Edge结点表示数据 向量 矩阵 张量边表示运算 加减乘除卷积使梯度求导更加方便import torchw = torch.tensor([1.],requires_grad=True)x = torch.tensor([2.],requires_grad=True)a = torch.add(w,x)# ...原创 2020-02-20 16:50:39 · 281 阅读 · 0 评论 -
PyTorch学习笔记(1)张量
tensortorch.tensor(data, # 数据 可以使list numpydtype=None, # 数据类型 默认与data一致device=None, # 所在设备 cuda / cpurequires_grad=False, # 是否需要梯度pin_memory = False ,# 是否存于锁页内存)flag = Trueif flag: arr = n...原创 2020-02-20 16:48:02 · 157 阅读 · 0 评论