PyTorch(二)Intermediate】的更多相关文章

PyTorch提供的autograd包能够根据输⼊和前向传播过程⾃动构建计算图,并执⾏反向传播. Tensor Tensor的几个重要属性或方法 .requires_grad 设为true的话,tensor将开始追踪在其上的所有操作 .backward()完成梯度计算 .grad属性 计算的梯度累积到.grad属性 .detach()解除对一个tensor上操作的追踪,或者用with torch.no_grad()将不想被追踪的操作代码块包裹起来. .grad_fn属性 该属性即创建Tensor…
残差网络ResNet resnet是何凯明大神在2015年提出的.并且获得了当年的ImageNet比赛的冠军. 残差网络具有里程碑的意义,为以后的网络设计提出了一个新的思路. googlenet的思路是加宽每一个layer,resnet的思路是加深layer. 论文地址:https://arxiv.org/abs/1512.03385 论文里指出,随着网络深度的增加,模型表现并没有更好,即所谓的网络退化.注意,不是过拟合,而是更深层的网络即便是train error也比浅层网络更高. 这说明,深…
DenseNet 论文传送门,这篇论文是CVPR 2017的最佳论文. resnet一文里说了,resnet是具有里程碑意义的.densenet就是受resnet的启发提出的模型. resnet中是把不同层的feature map相应元素的值直接相加.而densenet是将channel维上的feature map直接concat在一起,从而实现了feature的复用.如下所示: 注意,是连接dense block内输出层前面所有层的输出,不是只有输出层的前一层 网络结构 首先实现DenseBl…
一.首先需要安装好Anoconda,具体安装步骤可通过https://www.cnblogs.com/chenfeifen/p/10266012.html查看 由于官方下载更新工具包的速度很慢,因此添加清华大学 TUNA提供的Anaconda仓库镜像,可在Anoconda Prompt终端中输入如下命令进行添加: ①.conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ ②.con…
Overview TurboTransformers是腾讯最近开源的BERT推理模型,它的特点就是一个字,快.本人用BERT(huggingface/transformers)在V100上做了测试,测试结果和官宣的基本一致:TurboTransformers的推理速度要比Pytorch快上1~4倍. 它之所以快,是因为它是专用于BERT的轻量级推理模型. 分层 不管是计算机的硬件.软件,还是现在的深度学习,它们都遵循着一个很重要的设计思想--分层: 用简单的代码(或电路)来实现一个基本功能组件.…
Convolutional Neural Network import torch import torch.nn as nn import torchvision import torchvision.transforms as transforms # Device configuration device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') # Hyper parameters num_epoch…
原文:https://likewind.top/2019/02/01/Pytorch-dataprocess/ Pytorch系列: PyTorch系列(一) - PyTorch使用总览 PyTorch系列(二) - PyTorch数据读取 PyTorch系列(三) - PyTorch网络构建 PyTorch系列(四) - PyTorch网络设置 参考: PyTorch documentation PyTorch 码源 本文首先介绍了有关预处理包的源码,接着介绍了在数据处理中的具体应用: 其主要…
参考https://github.com/chenyuntc/pytorch-book/tree/v1.0 希望大家直接到上面的网址去查看代码,下面是本人的笔记 pytorch的设计遵循tensor-> variable(autograd)-> nn.Module三个由低到高的抽象层次,分别代表高维数组(张量).自动求导(变量)和神经网络(层/模块).这三个抽象之间联系紧密,可以同时进行修改和操作 在IPython和Jupyter notebook两个工具中使用了Jupyter noteboo…
pytorch之nn.Conv1d详解 之前学习pytorch用于文本分类的时候,用到了一维卷积,花了点时间了解其中的原理,看网上也没有详细解释的博客,所以就记录一下. Conv1dclass torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True) in_channels(int) – 输入信号的通道.在文本分类中,即为词向量的维度o…
大部分nn中的层class都有nn.function对应,其区别是: nn.Module实现的layer是由class Layer(nn.Module)定义的特殊类,会自动提取可学习参数nn.Parameter nn.functional中的函数更像是纯函数,由def function(input)定义. 由于两者性能差异不大,所以具体使用取决于个人喜好.对于激活函数和池化层,由于没有可学习参数,一般使用nn.functional完成,其他的有学习参数的部分则使用类.但是Droupout由于在训…
一.对Tensor的操作 从接口的角度讲,对Tensor的操作可以分为两类: (1)torch.function (2)tensor.function 比如torch.sum(a, b)实际上和a.sum(b)功能等价. 从存储的角度讲,对Tensor的操作也可以分为两类: (1)不修改自身数据,如a.add(b),加法结果返回一个新的tensor: (2)修改自身数据,如a.add_(b),加法结果仍存在a中,a被改变. 函数名以_结尾的称为inplace方式. 二.Tensor的创建 常见的…
看得不明不白(我在下一篇中写了如何理解gather的用法) gather是一个比较复杂的操作,对一个2维tensor,输出的每个元素如下: out[i][j] = input[index[i][j]][j] # dim=0 out[i][j] = input[i][index[i][j]] # dim=1 二维tensor的gather操作 针对0轴 注意index此时的值 输入 index = t.LongTensor([[0,1,2,3]]) print("index = \n",…
在神经网络训练时,还涉及到一些tricks,如网络权重的初始化方法,优化器种类(权重更新),图片预处理等,继续填坑. 1. 神经网络初始化(Network Initialization ) 1.1 初始化原因 我们构建好网络,开始训练前,不能默认的将所有权重系数都初始化为零,因为所有卷积核的系数都相等时,提取特征就会一样,反向传播时的梯度也会存在对称性,网络会退化会线性模型.另外网络层数较深时,初始化权重过大,会出现梯度爆炸,而过小又会出现梯度消失.一般权重初始化时需要考虑两个问题: (1)权重…
上一节中,我们介绍了Pytorch的基本知识,如数据格式,梯度,损失等内容. 在本节中,我们将介绍如何使用Pytorch来搭建一个经典的分类神经网络. 搭建一个神经网络并训练,大致有这么四个部分: 1.准备数据: 2.搭建模型: 3.评估函数: 4.优化网络权重. 先上一张模型结构图,基本包含了一个网络模型所包含的内容了. 接下来依次介绍. 一.数据准备 这一部分内容在上一篇中已详细讲过,这里就不多赘述了. 二.搭建模型 1.层的概念(神经网络的基本组建单元) 针对y=wx+b,搭建了一个简易的…
[pytorch]学习笔记(二)- Variable 学习链接自莫烦python 什么是Variable Variable就好像一个篮子,里面装着鸡蛋(Torch 的 Tensor),里面的鸡蛋数不断变化(对应值不断变化). 如果用一个 Variable 进行计算, 那返回的也是一个同类型的 Variable 创建Variable import torch from torch.autograd import Variable #创建张量 tensor=torch.FloatTensor([[1…
.简介 torch.autograd.Variable是Autograd的核心类,它封装了Tensor,并整合了反向传播的相关实现 Variable和tensor的区别和联系 Variable是篮子,而tensor是鸡蛋,鸡蛋应该放在篮子里才能方便拿走(定义variable时一个参数就是tensor) Variable这个篮子里除了装了tensor外还有requires_grad参数,表示是否需要对其求导,默认为False Variable这个篮子呢,自身有一些属性 比如grad,梯度varia…
pytorch 简介 pytorch 是目前世界上最流行的两个机器学习框架的其中之一,与 tensoflow 并峙双雄.它提供了很多方便的功能,例如根据损失自动微分计算应该怎样调整参数,提供了一系列的数学函数封装,还提供了一系列现成的模型,以及把模型组合起来进行训练的框架.pytorch 的前身是 torch,基于 lua,而 pytorch 基于 python,虽然它基于 python 但底层完全由 c++ 编写,支持自动并列化计算和使用 GPU 加速运算,所以它的性能非常好. 传统的机器学习…
使用pytorch快速搭建神经网络实现二分类任务(包含示例) Introduce 上一篇学习笔记介绍了不使用pytorch包装好的神经网络框架实现logistic回归模型,并且根据autograd实现了神经网络参数更新. 本文介绍利用pytorch快速搭建神经网络.即利用torch.nn以及torch.optim库来快捷搭建一个简单的神经网络来实现二分类功能. 利用pytorch已经包装好的库(torch.nn)来快速搭建神经网络结构. 利用已经包装好的包含各种优化算法的库(torch.opti…
代码和ppt: https://github.com/Iallen520/lhy_DL_Hw 遇到的一些细节问题: 1. X_train文件不带后缀名csv,所以不是规范的csv文件,不能直接用pd.read_csv,否则发现第一行名有错误,所以用原始的方法去处理 2. 记着拆分train和test,是有必要的. 3. 数据类型转换,第一次是numpy array的转换,从str转到float,第二次是pytorch数据初始化时,注意:预测问题的y是用的二维数据,float类型. 但是分类问题,…
DataLoader DataLoader(dataset,batch_size=1,shuffle=False,sampler=None, batch_sampler=None,num_workers=0,collate_fn=None,pin_memory=False, drop_last=False,timeout=0,work_init_fn=None) 常用参数说明: dataset: Dataset类 ( 详见下文数据集构建 ),可以自定义数据集或者读取pytorch自带数据集 ba…
背景 机器学习工作负载与传统的工作负载相比,一个比较显著的特点是对 GPU 的需求旺盛.在之前的文章中介绍过(https://mp.weixin.qq.com/s/Nasm-cXLtJObjLwLQHALmw 和 https://mp.weixin.qq.com/s/X4VDynLfKdVp-tyciQccyQ),目前 GPU 的显存已经不足以跟上模型参数规模的发展.随着 Transformer 等新的模型结构的出现,这一问题越来越显著.算法工程师们训练模型所需要的资源越来越多,分布式训练也随之…
理解张量,并将张量与线性代数的知识连接起来,我认为最重要的是理解 tensor 的两个属性:shape 和 ndim . ndim 表示张量的维度,一维张量的 ndim 值为 1,二维张量的 ndim 值为 2. shape 表示张量的形状,它的值是一个列表,列表元素个数与张量的维度相等,每一个元素值表示张量在此维度的元素个数. 举例来说: >>> tensor = torch.randn(3, 2, 2) >>> tensor tensor([[[ 1.1070, -…
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com AlexNet在2012年ImageNet图像分类任务竞赛中获得冠军.网络结构如下图所示: 对CIFAR10,图片是32*32,尺寸远小于227*227,因此对网络结构和参数需做微调: 最后一个max-pool层删除 网络定义代码如下: class AlexNet(nn.Module): def __init__(self): super(AlexNet, self).__init__() self…
记录如何用Pytorch搭建LeNet-5,大体步骤包括:网络的搭建->前向传播->定义Loss和Optimizer->训练 # -*- coding: utf-8 -*- # All codes and comments from <<深度学习框架Pytorch入门与实践>> # Code url : https://github.com/zhouzhoujack/pytorch-book # lesson_2 : Neural network of PT(Py…
本demo从pytorch官方的迁移学习示例修改而来,增加了以下功能: 根据AUC来迭代最优参数: 五折交叉验证: 输出验证集错误分类图片: 输出分类报告并保存AUC结果图片. import os import numpy as np import torch import torch.nn as nn from torch.optim import lr_scheduler import torchvision from torchvision import datasets, models,…
pytorch笔记2 用到的关于plt的总结 plt.scatter scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, data=None, **kwargs) 其他参数大致解释一下,x输入自变量list,y输入因变量list. c是颜色,可以是list…
目录 一.概念 二.Variable的创建和使用 三.标量求导计算图 四.矩阵求导计算图 五.Variable放到GPU上执行 六.Variable转Numpy与Numpy转Variable 七.Variable总结 一.概念1.Numpy里没有Variable这个概念,如果大家学过TensorFlow就会知道,Variable提供了自动求导的功能. 2.Variable需要放进一个计算图中,然后进行前后向传播和自动求导. 3.Variable的属性有三个: data:Variable里Tens…
autograd包是PyTorch中神经网络的核心部分,简单学习一下. autograd提供了所有张量操作的自动求微分功能. 它的灵活性体现在可以通过代码的运行来决定反向传播的过程, 这样就使得每一次的迭代都可以是不一样的. Variable类 autograd.Variable是这个包中的核心类. 它封装了Tensor,并且支持了几乎所有Tensor的操作. 一旦你完成张量计算之后就可以调用.backward()函数,它会帮你把所有的梯度计算好. 通过Variable的.data属性可以获取到…
Module 是 pytorch 提供的一个基类,每次我们要 搭建 自己的神经网络的时候都要继承这个类,继承这个类会使得我们 搭建网络的过程变得异常简单. 本文主要关注 Module 类的内部是怎么样的. 初始化方法中做了什么def __init__(self): self._backend = thnn_backend self._parameters = OrderedDict() self._buffers = OrderedDict() self._backward_hooks = Or…
一.autograd自动微分 autograd是专门为了BP算法设计的,所以这autograd只对输出值为标量的有用,因为损失函数的输出是一个标量.如果y是一个向量,那么backward()函数就会失效.不知道BP算法是什么的同学,估计也不知道什么是深度学习,建议先看Zen君提供的教材. 二.autograd的内部机理 variable是tensor的外包装,variable类型变量的data属性存储着tensor数据,grad属性存储关于该变量的导数,creator是代表该变量的创造者. 数据…