PyTorch学习笔记之计算图】的更多相关文章

1. **args, **kwargs的区别 def build_vocab(self, *args, **kwargs): counter = Counter() sources = [] for arg in args: if isinstance(arg, Dataset): sources += [getattr(arg, name) for name, field in arg.fields.items() if field is self] else: sources.append(…
本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/computational_graph.py 计算图 深度学习就是对张量进行一系列的操作,随着操作种类和数量的增多,会出现各种值得思考的问题.比如多个操作之间是否可以并行,如何协同底层的不同设备,如何避免冗余的操作,以实现最高效的计算效率,同时避免一些 bug.因此产生了计算图 (Computational Graph). 计算图是用来描述运算的有向无环…
记录如何用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…
原文地址:https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html 什么是pytorch? pytorch是一个基于python语言的的科学计算包,主要分为两种受众: 能够使用GPU运算取代NumPy 提供最大灵活度和速度的深度学习研究平台 开始 Tensors Tensors与numpy的ndarray相似,且Tensors能使用GPU进行加速计算. 创建5 * 3的未初始化矩阵: 创建并随机初始化矩阵: 创建一…
书上内容太多太杂,看完容易忘记,特此记录方便日后查看,所有基础语法以代码形式呈现,代码和注释均来源与书本和案例的整理. # -*- coding: utf-8 -*- # All codes and comments from <<深度学习框架Pytorch入门与实践>> # Code url : https://github.com/zhouzhoujack/pytorch-book # lesson_1 : Basic code syntax of PT(Pytorch) im…
目录 Pytorch Leture 05: Linear Rregression in the Pytorch Way Logistic Regression 逻辑回归 - 二分类 Lecture07: How to make netural network wide and deep ? Lecture 08: Pytorch DataLoader Lecture 09: softmax Classifier part one part two : real problem - MNIST i…
一.Tensor Tensor是Pytorch中重要的数据结构,可以认为是一个高维数组.Tensor可以是一个标量.一维数组(向量).二维数组(矩阵)或者高维数组等.Tensor和numpy的ndarrays相似. import torch as t 构建矩阵:x = t.Tensor(m, n) 注意这种情况下只分配了空间,并没有初始化. 使用[0,1]均匀分布随机初始化矩阵:x = t.rand(m, n) 查看x的形状:x.size() 加法: (1)x + y (2)t.add(x, y…
.简介 torch.autograd.Variable是Autograd的核心类,它封装了Tensor,并整合了反向传播的相关实现 Variable和tensor的区别和联系 Variable是篮子,而tensor是鸡蛋,鸡蛋应该放在篮子里才能方便拿走(定义variable时一个参数就是tensor) Variable这个篮子里除了装了tensor外还有requires_grad参数,表示是否需要对其求导,默认为False Variable这个篮子呢,自身有一些属性 比如grad,梯度varia…
本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/linear_regression.py 张量的操作 拼接 torch.cat() torch.cat(tensors, dim=0, out=None) 功能:将张量按照 dim 维度进行拼接 tensors: 张量序列 dim: 要拼接的维度 代码示例: t = torch.ones((2, 3)) t_0 = torch.cat([t, t], d…
PyTorch 的诞生 2017 年 1 月,FAIR(Facebook AI Research)发布了 PyTorch.PyTorch 是在 Torch 基础上用 python 语言重新打造的一款深度学习框架.Torch 是采用 Lua 语言为接口的机器学习框架,但是因为 Lua 语言较为小众,导致 Torch 学习成本高,因此知名度不高. PyTorch 的发展 2017 年 1 月正式发布 PyTorch. 2018 年 4 月更新 0.4.0 版,支持 Windows 系统,caffe2…
本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/tensor_introduce1.py https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/tensor_introduce1.py Tensor 的概念 Tensor 中文为张量.张量的意思是一个多维数组,它是标量.向量.矩阵的高维扩展. 标量可以称为 0 维张量,向…
PyTorch 的数据增强 我们在安装PyTorch时,还安装了torchvision,这是一个计算机视觉工具包.有 3 个主要的模块: torchvision.transforms: 里面包括常用的图像预处理方法 torchvision.datasets: 里面包括常用数据集如 mnist.CIFAR-10.Image-Net 等 torchvision.models: 里面包括常用的预训练好的模型,如 AlexNet.VGG.ResNet.GoogleNet 等 深度学习模型是由数据驱动的,…
本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson3/module_containers.py 这篇文章来看下 PyTorch 中网络模型的创建步骤.网络模型的内容如下,包括模型创建和权值初始化,这些内容都在nn.Module中有实现. 网络模型的创建步骤 创建模型有 2 个要素:构建子模块和拼接子模块.如 LeNet 里包含很多卷积层.池化层.全连接层,当我们构建好所有的子模块之后,按照一定的顺序拼接起来…
本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson3/nn_layers_others.py 这篇文章主要介绍了 PyTorch 中的池化层.线性层和激活函数层. 池化层 池化的作用则体现在降采样:保留显著特征.降低特征维度,增大 kernel 的感受野. 另外一点值得注意:pooling 也可以提供一些旋转不变性. 池化层可对提取到的特征信息进行降维,一方面使特征图变小,简化网络计算复杂度并在一定程度上避…
本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson4/optimizer_methods.py https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson4/momentum.py 这篇文章主要介绍了 PyTorch 中的优化器,包括 3 个部分:优化器的概念.optimizer 的属性.optimizer 的方法. 优化器的概念 P…
本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson5/tensorboard_methods.py https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson5/tensorboard_methods_2.py https://github.com/zhangxiann/PyTorch_Practice/blob/master/les…
本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson6/bn_and_initialize.py https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson6/bn_in_123_dim.py https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson6/norma…
上一节中,我们使用autograd的包来定义模型并求导.本节中,我们将使用torch.nn包来构建神经网络. 一个nn.Module包含各个层和一个forward(input)方法,该方法返回output. 上图是一个简单的前馈神经网络.它接受一个输入.然后一层接着一层地传递.最后输出计算的结果. 神经网络模型的训练过程 神经网络的典型训练过程如下: 定义包含一些可学习的参数(或者叫做权重)的神经网络模型. 在数据集上迭代. 通过神经网络处理输入. 计算损失函数(输出结果和正确值的差值大小).…
英文原文链接:http://cs231n.github.io/python-numpy-tutorial/ Numpy Numpy是Python中科学计算的核心库.它提供了一个高性能的多维数组对象,以及处理这些数组的工具.如果您已经熟悉MATLAB,那么在开始学习Numpy时,您可能会发现本教程非常有用. Arrays numpy数组是由所有类型相同的值组成的网格,由非负整数的元组索引.维数为数组的秩;数组的形状是一个整数元组,给出了数组在每个维度上的大小. 我们可以从嵌套的Python列表初始…
非线性回归问题的参数求解,反向求导基本流程.Variable 计算时, 它在后台一步步默默地搭建着一个庞大的系统, 叫做计算图, computational graph. 这个图将所有的计算步骤 (节点) 都连接起来, 最后进行误差反向传递的时候, 一次性将所有 variable 里面的修改幅度 (梯度) 都计算出来, 而 tensor 就没有这个能力. from torch.autograd import Variable dtype = torch.FloatTensor N, D_in,…
一.对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的创建 常见的…
method 1 import torch from torch.autograd import Variable N, D_in, H, D_out = 64, 1000, 100, 10 x = Variable(torch.randn(N, D_in)) y = Variable(torch.randn(N, D_out), requires_grad=False) # define our model as a sequence of layers model = torch.nn.Se…
PyTorch Tensors are just like numpy arrays, but they can run on GPU.No built-in notion of computational graph, or gradients, or deep learning.Here we fit a two-layer net using PyTorch Tensors: import torch dtype = torch.FloatTensor # step 1: create r…
一.继承nn.Module类并自定义层 我们要利用pytorch提供的很多便利的方法,则需要将很多自定义操作封装成nn.Module类. 首先,简单实现一个Mylinear类: from torch import nn # Mylinear继承Module class Mylinear(nn.Module): # 传入输入维度和输出维度 def __init__(self,in_d,out_d): # 调用父类构造函数 super(Mylinear,self).__init__() # 使用Pa…
一.visdom可视化工具 安装:pip install visdom 启动:命令行直接运行visdom 打开WEB:在浏览器使用http://localhost:8097打开visdom界面 二.使用visdom # 导入Visdom类 from visdom import Visdom # 定义一个env叫Mnist的board,如果不指定,则默认归于main viz = Visdom(env='Mnist') # 在window Accuracy中画train acc和test acc,x…
一.梯度 导数是对某个自变量求导,得到一个标量. 偏微分是在多元函数中对某一个自变量求偏导(将其他自变量看成常数). 梯度指对所有自变量分别求偏导,然后组合成一个向量,所以梯度是向量,有方向和大小. 上左图中,箭头的长度表示陡峭度,越陡峭的地方箭头越长,箭头指向的方向是y变大的方向,如果要使用梯度下降,则需要取负方向. 右图中,蓝色代表低点,红色代表高点,中间的箭头方向从蓝色指向红色,而且中间最陡峭的地方,箭头最长. 二.梯度下降 上图中分别使用梯度下降优化θ1和θ2的值,α表示学习率,即每次按…
一.Pytorch安装 安装cuda和cudnn,例如cuda10,cudnn7.5 官网下载torch:https://pytorch.org/ 选择下载相应版本的torch 和torchvision的whl文件 使用pip install whl_dir安装torch,并且同时安装torchvision 二.初步使用pytorch # -*- coding:utf-8 -*- __author__ = 'Leo.Z' import torch import time # 查看torch版本…
import torch as t import torch.nn as nn import torch.nn.functional as F from torchvision import models # 残差快 残差网络公式 a^[L+] = g(a^[L]+z^[L+]) class ResidualBlock(nn.Module): def __init__(self, inchannel, outchannel, stride=, shortcut=None): #shortcut=…
1.要点 Torch 中提供了一种帮你整理你的数据结构的好东西, 叫做 DataLoader, 我们能用它来包装自己的数据, 进行批训练. 而且批训练可以有很多种途径. 2.DataLoader DataLoader 是 torch 给你用来包装你的数据的工具. 所以你要讲自己的 (numpy array 或其他) 数据形式装换成 Tensor, 然后再放进这个包装器中. 使用 DataLoader 有什么好处呢? 就是他们帮你有效地迭代数据, 举例: import torch import t…
import torch from torch.autograd import Variable import matplotlib.pyplot as plt torch.manual_seed() # fake data x = torch.unsqueeze(torch.linspace(-,,),dim=) y = x.pow() + 0.2 * torch.rand(x.size()) x, y = Variable(x,requires_grad=False), Variable(y…