pytorch
文章平均质量分 95
pytorch深度学习框架
然后就去远行吧
我们的目标是星辰大海~
展开
-
torch.distributions.Categorical()的简单记录
简单介绍torch.distributions.Categorical()的部分内容原创 2022-10-10 22:56:05 · 10157 阅读 · 4 评论 -
Jupyter notebook中怎么添加Pytorch运行环境
打开Anaconda中的Anaconda Navigator,如下所示:修改channel环境,如下红框所示:找到Jupyter Notebook的位置,点击Install,图中因为已经安装,所以是Launch,当没有下载过时,状态为Install,如下所示:重启Jupyter Notebook即可;...原创 2020-08-14 00:33:58 · 23318 阅读 · 2 评论 -
Pytorch开发环境安装(Windows版本)
1、Anaconda安装1.1 安装步骤官网下载安装包:点击该网页https://www.anaconda.com/products/individual,跳转后拉到网页最底端,选择合适的版本进行下载:这里我选择了Windows中的64位版本进行下载;下载完成后,运行Anaconda3-2020.07-Windows-x86_64.exe进行安装;在安装过程中,选择安装路径,并勾选Add Anaconda to the system PATH environment,将anacond原创 2020-08-13 16:52:23 · 2509 阅读 · 4 评论 -
Pytorch —— GPU的使用
1、CPU与GPUCPU(Central Processing Unit,中央处理器):主要包括控制器和运算器;GPU(Graphics Processing Unit,图形处理器):处理统一的,无依赖的大规模数据运算;上图中,黄色部分表示控制单元,绿色部分表示计算单元,橙色部分表示存储单元;2、数据迁移至GPUdata.to(“cuda”)实现将数据从CPU迁移到GPU;data.to(“cpu”)实现将数据丛GPU迁移到CPU;data有两种数据类型,一种是Tensor,一种是Modul原创 2020-06-17 09:28:23 · 1132 阅读 · 0 评论 -
Pytorch —— 模型保存与加载
1、序列化与反序列化模型的保存与加载就是序列化与反序列化,序列化与反序列化主要将内存与硬盘之间的数据转换关系,模型在内存中以对象的形式存储,在内存中对象不能长久地保存,所以需要将训练好的模型保存到硬盘中。在硬盘中数据是以0-1的二进制形式保存的,这就是二进制序列。序列化是指将内存中的某个对象保存到硬盘当中,以二进制序列的形式进行保存。反序列化是将存储的二进制数据传输到内存中形成对象,这样就可以在内存中使用该模型。序列化和反序列化的目的是将数据长久地保存。2、模型保存与加载的两种方式Pytorct中原创 2020-06-16 21:48:24 · 932 阅读 · 1 评论 -
Pytorch —— BN、LN、IN、GN
1、为什么要Normalization?深度学习中存在Internal Covariate Shift(ICS):数据尺度/分布异常,导致训练困难;在权值初始化部分介绍了深度神经网络训练过程中的数据尺度变化问题:H11=∑i=0nXi∗W1i\mathrm{H}_{11}=\sum_{i=0}^{n} X_{i} * W_{1 i}H11=i=0∑nXi∗W1iD(H11)=∑i=0nD(Xi)∗D(W1i)\mathbf{D}\left(\mathrm{H}_{11}\right)=\su原创 2020-06-16 18:12:06 · 1861 阅读 · 1 评论 -
pytorch —— Batch Normalization
1、Batch Normalization概念Batch Normalization:批标准化批: 一批数据,通常为mini-batch标准化: 0均值,1方差优点:可以用更大学习率,加速模型收敛;可以不用精心设计权值初始化;可以不用dropout或较小的dropout;可以不用L2或者较小的weight decay;可以不用LRN(local response normali...原创 2020-06-16 07:11:44 · 2809 阅读 · 2 评论 -
pytorch —— 正则化之Dropout
1、Dropout概念Dropout:随机失活原创 2020-06-15 17:05:59 · 1716 阅读 · 0 评论 -
pytorch —— 正则化之weight_decay
1、正则化与偏差-方差分解1.1 RegularizationRegularization:减小方差的策略;误差可分解为偏差,方差与噪声之和,即误差=偏差+方差+噪声之和;偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声则表达了在当前任务上任何学习算法所能达到的期...原创 2020-06-15 15:11:19 · 17758 阅读 · 10 评论 -
Pytorch可视化工具 —— TensorBoard
1、TensorBoard简介TensorBoard:TensorFlow中强大的可视化工具;支持标量、图像、文本、音频、视频和Embedding等多种数据可视化;在学习TensorBoard之前,先对其运行机制有大概的了解:在python脚本中记录可视化的数据;记录的数据会以event file(事件文件)存放到硬盘中;在终端使用TensorBoard读取event file,TensorBoard在网页端进行可视化;下面通过代码学习TensorBoard的具体使用:import nu原创 2020-06-15 13:30:43 · 577 阅读 · 0 评论 -
Pytorch —— 学习率调整策略
1、为什么要调整学习率学习率控制梯度更新的快慢,在训练中,开始时的学习率比较大,梯度更新步伐比较大,后期时学习率比较小,梯度更新步伐比较小。梯度下降:wi+1=wi−g(wi)w_{i+1}=w_{i}-g\left(w_{i}\right)wi+1=wi−g(wi)使用学习率的梯度下降:wi+1=wi−LR∗g(wi)w_{i+1}=w_{i}-L R * g\left(w_{i}\right)wi+1=wi−LR∗g(wi)学习率的作用是控制更新的步伐;Pytorch提供了一个调整学习原创 2020-06-15 12:36:50 · 2719 阅读 · 0 评论 -
Pytorch —— 优化器Optimizer(二)
1、learning rate学习率梯度下降:wi+1=wi−LR∗g(wi)w_{i+1}=w_{i}-LR*g\left(w_{i}\right)wi+1=wi−LR∗g(wi)梯度是沿着负梯度方向进行更新的,学习率控制更新的步伐;2、momentum动量Momentum(动量,冲量):结合当前梯度与上一次更新信息,用于当前更新;学习动量法之前,先来学习指数加权平均:vt=β∗vt−1+(1−β)∗θt\mathrm{v}_{t}=\beta * v_{t-1}+(1-\beta) * \原创 2020-06-15 08:16:56 · 518 阅读 · 0 评论 -
Pyotrch —— 优化器Optimizer(一)
目录1、什么是优化器2、optimizer的属性3、optimizer的方法4、代码分析5、优化器基本方法的使用1、什么是优化器Pytorch优化器:管理并更新模型中可学习参数的值,使得模型输出更接近真实标签;管理是指优化器管理和修改参数,更新是指优化器的优化策略。优化策略通常采用梯度下降,梯度是一个向量,梯度的方向是使得方向导数最大。2、optimizer的属性优化器基本属性:defaults:优化器超参数;state:参数的缓存,如momentum参数;param_groups:管理的参原创 2020-06-14 21:49:34 · 717 阅读 · 0 评论 -
Pytorch —— 损失函数(二)
目录5、nn.L1Loss6、nn.MSELoss7、nn.SmoothL1Loss8、nn.PoissonNLLLoss9、nn.KLDivLoss10、nn.MarginRankingLoss11、nn.MultiLabelMarginLoss12、nn.softMarginLoss13、nn.MultiLabelSoftMarginLoss14、nn.MultiMarginLoss15、nn.TripleMarginLoss16、nn.HingeEmbeddingLoss17、nn.CosineEmb原创 2020-06-14 18:26:28 · 726 阅读 · 1 评论 -
Pytorch —— 损失函数(一)
1、损失函数概念损失函数:衡量模型输出与真实标签的差异;上图是一个一元线性回归的拟合过程,绿色的点是训练的样本,蓝色的直线是训练好的模型。这个模型没有很好地拟合所有的数据点,也就是说,每个数据点并没有都在模型上,所以数据点会产生Loss。现在我们认识一下什么是损失函数、代价函数、目标函数:损失函数(Loss Function)Loss=f(y^,y)Loss=f(\hat{y},y)Loss=f(y^,y)这是计算一个样本的损失;代价函数(Cost Function)cost=1N∑iNf(原创 2020-06-14 03:39:48 · 1705 阅读 · 1 评论 -
Pytorch —— 权值初始化
1、梯度消失与爆炸这里使用一个三层的全连接网络,现在观察一下第二个隐藏层W2W_2W2的权值的梯度是怎么求取的。根据链式求导法则可以知道,W2W_2W2的求导如下:H2=H1∗W2\mathrm{H}_{2}=\mathrm{H}_{1} * \mathrm{W}_{2}H2=H1∗W2ΔW2=∂Loss∂W2=∂Loss∂out⋆∂out∂H2⋆∂H2∂w2\Delta \mathrm{W}_{2}=\frac{\partial \mathrm{Loss}}{\partial \mat原创 2020-06-13 16:03:38 · 1303 阅读 · 0 评论 -
用Pytorch实现逻辑回归分类
目录1、代码实现2、踩过的坑1、代码实现步骤:获得数据建立逻辑回归模型定义损失函数计算损失函数求解梯度梯度更新预测测试集import torchimport torch.nn as nnimport numpy as npimport matplotlib.pyplot as pltfrom torch.autograd import Variableimport...原创 2020-04-24 20:17:26 · 1568 阅读 · 0 评论 -
Pytorch中view()方法和resize()方法的区别
1、view()通过tensor.view方法可以调整tensor的形状,但必须保证调整前后元素总数一致。view不会修改自身的数据,返回的新tensor与源tensor共享内存,即更改其中一个,另外一个也会跟着改变。在实际应用中可能经常需要添加或减少某一维度,这时squeeze和unsqueeze两个函数就派上用场。import torch as ta = t.arange(0, 6)a...原创 2020-03-17 22:15:07 · 8284 阅读 · 0 评论 -
pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法
一、先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的数去掉第一个维数为一的维度之后就变成(3)行。squeeze(a)就是将a中所有为1的维度删掉。不为1的维度没有影响。a.squeeze(N) 就是去掉a中指定的维数为一的维度。还有一种形式就是b=torch.squeeze(a,N) a中去掉指...转载 2020-03-17 20:49:16 · 1677 阅读 · 0 评论 -
pytorch —— 池化、线性、激活函数层
1、池化层——Pooling Layer池化运算:对信号进行“收集”并“总结”,类似水池收集水资源,因为得名池化层。收集:多变少;总结:最大值/平均值1.1 nn.MaxPool2d功能:对二维信号(图像)进行最大值池化;nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, ...原创 2020-03-10 14:44:24 · 1340 阅读 · 0 评论 -
pytorch —— nn网络层 - 卷积层
1、1d/2d/3d卷积卷积运算: 卷积核在输入信号(图像)上滑动,相应位置上进行乘加;卷积核: 又称为滤波器,过滤器,可认为是某种模式,某种特征;卷积过程类似于用一个模板去图像上寻找与它相似的区域,与卷积核模式越相似,激活值越高,从而实现特征提取;AlexNet卷积核可视化,发现卷积核学习到的是边缘,条纹,色彩这一些细节模式;卷积维度: 一般情况下,卷积核在几个维度上滑动就是几维卷...原创 2020-03-10 13:12:54 · 421 阅读 · 0 评论 -
pytorch —— 模型容器与AlexNet构建
1、模型容器Containerspytorch的Containers中有三个常用的模块:nn.Sequential:按顺序包装多个网络层nn.ModuleList:像python的list一样包装多个网络层nn.ModuleDict:像python的dict一样包装多个网络层1.1 容器之Sequentialnn.Sequential是nn.module的容器,用于按顺序包装一组网...原创 2020-03-10 00:14:26 · 369 阅读 · 0 评论 -
pytorch ——模型创建与nn.Module
1、网络模型创建步骤模型模块中分为两个部分,模型创建和权值初始化;模型创建又分为两部分,构建网络层和拼接网络层;网络层有卷积层,池化层,激活函数等;构建网络层后,需要进行网络层的拼接,拼接成LeNet,AlexNet和ResNet等。创建好模型后,需要对模型进行权值初始化,pytorch提供了丰富的初始化方法,Xavier,Kaiming,均匀分布,正态分布等。以上一切都会基于nn.Mo...原创 2020-03-10 00:14:09 · 834 阅读 · 0 评论 -
pytorch随笔
1. torch.from_numpy()作用:将numpy数组转换成torch张量;具体形式:torch.form_numpy(data);2. data[].numpy()作用:将张量转换为numpy数组;形式:data[].numpy()3. plt.imshow()作用:plt.imshow()函数负责对图像进行处理,并显示其格式,但是不能显示;形式:plt.im...原创 2020-02-21 14:26:34 · 200 阅读 · 0 评论 -
pytorch中的torch.rand(),torch.randn(),torch.randerm()的关系
1. torch.rand()torch.rand(*sizes, out=None) → Tensor返回一个张量,包含了从区间[0,1)的均匀分布中抽取的一组随机数,形状由可变参数sizes 定义。1.1 参数sizes (int…) – 整数序列,定义了输出形状out (Tensor, optinal) - 结果张量1.2 例子>>> torch.rand...原创 2020-02-20 23:27:45 · 3669 阅读 · 0 评论 -
pytorch —— transforms图像增强(一)
1、数据增强(data augmentation)数据增强又称为数据增广,数据扩增,它是对训练集进行变换,使训练集更丰富,从而让模型更具泛化能力。在中学阶段就已经接触过数据增强的概念,看一个例子,高中的五年高考三年模拟,假设学生是一个模型,五年高考真题是一个训练集,当年高考题是一个验证集,用来验证学习模型的学习能力和效果。对于这个例子怎么做数据增强呢?就是对历年的高考题的知识点进行分析和提炼,...原创 2019-11-21 22:55:59 · 6136 阅读 · 4 评论 -
安装pytorch步骤
1. Anaconda安装安装步骤:官网下载anaconda安装包https://www.anaconda.com/distribution/#download-section;下载好安装包之后,点击运行安装包;选择安装路径,切记要勾选Add Anaconda to the system PATH environment variable,等待安装完成;验证安装成功,打开cmd,输入c...原创 2019-10-30 21:17:36 · 18778 阅读 · 7 评论 -
pytorch —— 图像预处理模块(Transforms)
transforms运行机制torchvision是pytorch的计算机视觉工具包,在torchvision中有三个主要的模块:torchvision.transforms,常用的图像预处理方法,在transforms中提供了一系列的图像预处理方法,例如数据的标准化,中心化,旋转,翻转等等;torchvision.datasets,定义了一系列常用的公开数据集的datasets,比如常用...原创 2019-10-22 18:56:09 · 2857 阅读 · 1 评论 -
pytorch - 数据读取机制中的Dataloader与Dataset
1、人民币二分类要求:将第四套人民币中的一元和一百元进行二分类;怎么建立一个预测模型呢?考虑上一个博客中的机器学习模型训练五大步骤;第一是数据,第二是模型,第三是损失函数,第四是优化器,第五个是迭代训练过程。这里主要学习数据模块当中的数据读取,数据模块通常还会分为四个子模块,数据收集、数据划分、数据读取、数据预处理。在进行实验之前,需要收集数据,数据包括原始样本和标签;有了原始数据之后,...原创 2019-10-22 15:49:03 · 31845 阅读 · 46 评论 -
pytorch - autograd与逻辑回归
1、torch.autograd——自动求导系统深度学习模型的训练就是不断更新权值,权值的更新需要求解梯度,梯度在模型训练中是至关重要的。然而求解梯度十分繁琐,pytorch提供自动求导系统。我们不需要手动计算梯度,只需要搭建好前向传播的计算图,然后根据pytorch中的autograd方法就可以得到所有张量的梯度。(1)torch.autograd.backward功能:自动求取梯度t...原创 2019-10-17 23:06:49 · 496 阅读 · 0 评论 -
pytorch——计算图与动态图机制
1、计算图计算图是用来描述运算的有向无环图;计算图有两个主要元素:结点(Node)和边(Edge);结点表示数据,如向量、矩阵、张量,边表示运算,如加减乘除卷积等;用计算图表示:y=(x+w)∗(w+1)y = (x + w) * (w + 1)y=(x+w)∗(w+1)令a=x+wa=x+wa=x+w,b=w+1b=w+1b=w+1,y=a∗by=a*by=a∗b,那么得到的计算图如下...原创 2019-10-15 15:16:40 · 13662 阅读 · 6 评论 -
pytorch——张量操作与线性回归
1、张量的操作:拼接、切分、索引和变换一、张量拼接与切分1.1 torch.cat()功能:将张量按维度dim进行拼接tensors:张量序列din:要拼接的维度torch.cat(tensors, dim=0, out=None)1.2 torch.stack()功能:在新创建的维度dim上进行拼接tensors:张量序列to...原创 2019-10-15 00:50:05 · 508 阅读 · 0 评论 -
PyTorch的Tensor(张量)
Tensor的概念Tensor(张量)是一个多维数组,它是标量、向量、矩阵的高维拓展。标量是一个零维张量,是没有方向的,是一个数。一维张量只有一个维度,是一行或者一列。二维张量是一个矩阵,有两个维度,灰度图片就是一个二维张量。当图像是彩色图像(RGB)的时候,就得使用三维张量了。Tensor与Variable张量在数学中是多维数组,在pytorch中,张量不仅仅表示多维数组,张量还是py...原创 2019-10-11 22:14:14 · 3648 阅读 · 0 评论