[Pytorch笔记] scatter_】的更多相关文章

https://blog.csdn.net/qq_16234613/article/details/79827006 scatter_(input, dim, index, src)将src中数据根据index中的索引按照dim的方向填进input中. >>> x = torch.rand(, ) >>> x 0.4319 0.6500 0.4080 0.8760 0.2355 0.2609 0.4711 0.8486 0.8573 0.1029 [torch.Floa…
pytorch笔记 optimizer.zero_grad() 将梯度变为0,用于每个batch最开始,因为梯度在不同batch之间不是累加的,所以必须在每个batch开始的时候初始化累计梯度,重置为0. for epoch in range(num_epoches):# 每个epoch for inputs,labels in dataloader:# 每个batch optimizer.zero_grad()# 初始化梯度 outputs = model(inputs)# 正向 _,pred…
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…
pytorch笔记 - torchvision.utils.make_grid torchvision.utils.make_grid torchvision.utils.make_grid(tensor, nrow=8, padding=2, normalize=False, range=None, scale_each=False) # 将一小batch图片变为一张图.nrow表示每行多少张图片的数量. # 给一个batch为4的图片,h和w分别为32,channel为3,看看结果 imag…
scatter() 和 scatter_() 的作用是一样的,只不过 scatter() 不会直接修改原来的 Tensor,而 scatter_() 会 PyTorch 中,一般函数加下划线代表直接在原来的 Tensor 上修改 scatter(dim, index, src) 的参数有 3 个 dim:沿着哪个维度进行索引 index:用来 scatter 的元素索引 src:用来 scatter 的源元素,可以是一个标量或一个张量 这个 scatter  可以理解成放置元素或者修改元素 简单…
原文地址: https://blog.csdn.net/jiangpeng59/article/details/80667335 作者:PJ-Javis 来源:CSDN -------------------------------------------------------------------------------------------------- requires_grad Variable变量的requires_grad的属性默认为False,若一个节点requires_gr…
刚从图像处理的hole中攀爬出来,刚走一步竟掉到了另一个hole(fire in the hole*▽*) 1.RNN中的attentionpytorch官方教程:https://pytorch.org/tutorials/intermediate/seq2seq_translation_tutorial.html首先,RNN的输入大小都是(1,1,hidden_size),即batch=1,seq_len=1,hidden_size=embed_size,相对于传统的encoder-decod…
1. 为网络的不同部分指定不同的学习率 class LeNet(t.nn.Module): def __init__(self): super(LeNet, self).__init__() self.features = t.nn.Sequential( t.nn.Conv2d(3, 6, 5), t.nn.ReLU(), t.nn.MaxPool2d(2, 2), t.nn.Conv2d(6, 16, 5), t.nn.ReLU(), t.nn.MaxPool2d(2, 2) ) # 由于调…
1. torch.nn与torch.nn.functional之间的区别和联系 https://blog.csdn.net/GZHermit/article/details/78730856 nn和nn.functional之间的差别如下,我们以conv2d的定义为例 torch.nn.Conv2d import torch.nn.functional as F class Conv2d(_ConvNd): def __init__(self, in_channels, out_channels…
一.张量 标量 可以看作是  零维张量 向量 可以看作是  一维张量 矩阵 可以看作是  二维张量 继续扩展数据的维度,可以得到更高维度的张量 ————>  张量又称 多维数组 给定一个张量数据,就可以确定 它的维度 + 大小 + 元素个数 # 对于一个 大小为 0个条目的元组() ,元素个数为1 只有 维度.大小.元素个数.各元素都相同的两个张量,才是两个相同的张量 举例:对于某个张量,若其中有个条目是 ,那么这个1不可省略.也应该算进张量的维度中. 大小为(,) 的二维张量 和 大小为 (,…
一.人工神经网络库 Pytorch ———— 让计算机  确定神经网络的结构 +   实现人工神经元 + 搭建人工神经网络 + 选择合适的权重 (1)确定人工神经网络的 结构: 只需要告诉Pytorch 神经网络 中的神经元个数   每个神经元是怎么样的[比如 输入 输出 非线性函数]  各神经元的连接方式 (2)确定人工神经元的权重值: 只需要告诉 pytorch 什么样的权重值比较好 (3)处理 输入和输出: pytorch 可以和其他库合作,协助处理神经网络的 输入和输出 二.利用Pyto…
一.简介 在 PyTorch 中,我们的数据集往往会用一个类去表示,在训练时用 Dataloader 产生一个 batch 的数据 https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html#sphx-glr-beginner-blitz-cifar10-tutorial-py 比如官方例子中对 CIFAR10 图像数据集进行分类,就有用到这样的操作,具体代码如下所示 trainset = torchvision.data…
Tensor slice Tensor的indices操作 以[2,3]矩阵为例,slice后可以得到任意shape的矩阵,并不是说一定会小于2行3列. import torch truths=torch.Tensor([[1,2,3],[4,5,6]]) #代表新生成一个[3,]的矩阵,行位置分别取原先矩阵的第1,第0,第1行. print(truths[[1,0,1],:]) print(truths[[1,0,1]]) #等同于truths[[1,0,1],:] #代表新生成一个[,4]的…
一.组织张量的元素 (1)重排张量元素 本节介绍在不改变 张量元素个数 和 各元素的值的情况下改变张量的大小 torch.Tensor类的成员方法 reshape() 参数是多个int类型的值. 如果想要把一个张量的大小改成 s[0],s[1],s[2],s[3]....那就让s[0],s[1],s[2],s[3]....作为reshape() 方法的n个参数 使用 reshape()  在不改变元素个数和各元素的值的情况下改变张量大小 tc = torch.arange(12) #张量大小 (…
一.人工神经元 上方人工神经元中: 输入 * 权重 ——>  相当于 人神经元中  树突的功能 各输入 相加 ,再做非线性变化f ——>  相当于胞体的功能 将非线性变化的结果输出 ——> 相当于轴突 在非线性函数f固定的情况下,选择不同的权重,单个神经元 可以完成 不同的运算 但并不是全部,比如 : “或运算” 上述证明过程 可表示为: y = f( w[0] * x[0] + w[1] * w[1] + w[2]  ) 在 x[0] x[1] 两个输入 分别为 00  10   01…
1.squeeze() 函数 squeeze() 用来去掉向量的一个维度,只有维度为 1 的那一维才能去掉 example: 初始化1个向量shape为(1,2,3)的向量 import torch a = torch.rand((1,2,3)) 去掉第 0 维,第 0 维的大小是1,所以可以去掉第0维,去掉后向量的 shape 是(2,3) 去掉最后一维,最后一维的大小是3,所以不会操作成功,向量的 shape 仍然是(1,2,3) 2.unsqueeze()函数 从函数名字就可以看出,uns…
PyTorch 是目前主流的深度学习框架之一,而 JupyterLab 是基于 Web 的交互式笔记本环境.于 JupyterLab 我们可以边记笔记的同时.边执行 PyTorch 代码,便于自己学习.调试或以后回顾. 本文将介绍这样的环境如何进行准备.了解更多: PyTorch 官方文档 JupyterLab 交互式笔记本 安装 Anaconda Anaconda: https://www.anaconda.com/products/individual#Downloads 北外镜像源: ht…
[源码解析]PyTorch如何实现前向传播(1) --- 基础类(上) 目录 [源码解析]PyTorch如何实现前向传播(1) --- 基础类(上) 0x00 摘要 0x01 总体逻辑 0x02 废弃类 2.1 Variable 2.2 Function 0x03 Tensor 3.1 定义 in python 3.2 查找定义 3.2.1 Tensor 3.2.2 _TensorBase 3.3 转换 3.3.1 Python 导入 3.3.2 C++ 导出 & 初始化 3.3.2.1 共享库…
[源码解析]PyTorch如何实现前向传播(2) --- 基础类(下) 目录 [源码解析]PyTorch如何实现前向传播(2) --- 基础类(下) 0x00 摘要 0x01 前文回顾 0x02 TensorImpl 2.1 转嫁 2.2 定义 0x03 自动求导相关类 3.1 AutogradMeta 3.2 DifferentiableViewMeta 3.3 AutogradContext 3.4 Auto Function 0x04 Node 4.1 定义 4.2 重要成员变量 4.2.…
[源码解析] PyTorch如何实现前向传播(3) --- 具体实现 目录 [源码解析] PyTorch如何实现前向传播(3) --- 具体实现 0x00 摘要 0x01 计算图 1.1 图的相关类 1.2 动态图 1.3 动态展示 0x02 总体分析 0x03 Node 继承体系 3.1 继承体系 3.2 Node 3.3 SubBackward0 3.4 PowBackward0 3.5 MulBackward0 3.6 PermuteBackward 0x04 前向计算 4.1 减法实现…
[源码解析] Pytorch 如何实现后向传播 (2)---- 引擎静态结构 目录 [源码解析] Pytorch 如何实现后向传播 (2)---- 引擎静态结构 0x00 摘要 0x01 Engine 0x02 GraphRoot 2.1 构建 2.2 作用 0x03 GraphTask 3.1 定义 3.2 outstanding_tasks_ 3.2.1 任务结束 3.2.2 增加 3.2.3 递减 3.3 keep_graph 3.4 dependencies_ 3.5 not_ready…
[源码解析] PyTorch 如何实现后向传播 (4)---- 具体算法 目录 [源码解析] PyTorch 如何实现后向传播 (4)---- 具体算法 0x00 摘要 0x01 工作线程主体 1.1 线程主体代码 1.2 使用 Ready Queue 0x02 反向计算总体逻辑 0x03 准备工作 0x04 核心逻辑 0x05 准备下一步工作 5.1 依据依赖排查节点 5.2 处理这个节点 0x06 扫尾操作 6.1 判断结束 6.2 后续&通知 6.2.1 后续操作 6.2.2 通知主线程…
[源码解析] 深度学习流水线并行 GPipe(3) ----重计算 目录 [源码解析] 深度学习流水线并行 GPipe(3) ----重计算 0x00 摘要 0x01 概述 1.1 前文回顾 1.2 Gradient checkpointing 0x02 背景知识 2.1 求导如何工作 2.2 梯度Checkpoint 2.3 论文内容 2.3.1 主要论文 2.3.2 论文 Training Deep Nets with Sublinear Memory Cost 2.3.2.1 主要思路 2…
[源码解析] 深度学习流水线并行之PopeDream(1)--- Profile阶段 目录 [源码解析] 深度学习流水线并行之PopeDream(1)--- Profile阶段 0x00 摘要 0x01 概述 1.1 前文回顾 1.2 目前问题 1.2.1 数据并行 1.2.2 模型并行 1.2.3 Gpipe 0x02 论文 2.1 方案概述 2.1.1 并行方式 2.1.2 1F1B 0x03 流水线 3.1 流水线改进 3.2 挑战 3.4 流水线划分算法 3.5 Profile 0x04…
[源码解析] 深度学习流水线并行 PipeDream(6)--- 1F1B策略 目录 [源码解析] 深度学习流水线并行 PipeDream(6)--- 1F1B策略 0x00 摘要 0x01 流水线比较 1.1 普通流水线 1.2 Gpipe流水线 1.3 1F1B流水线 1.3.1 思路 1.3.2 图示 0x02 PipeDream 实现 2.1 总体逻辑 2.2 权重问题 2.3 Weight Stashing 2.4 Vertical Sync 2.5 缓冲区 0x03 代码 3.1 总…
置顶:将pytorch clone到本地,查看initial commit,已经是麻雀虽小五脏俱全了,非常适合作为学习模板. 2017年12月7日01:24:15 2017-10-25 17:51 参考了知乎问题  如何有效地阅读PyTorch的源代码? 相关回答 按照构建顺序来阅读代码是很聪明的方法. 1,TH中最核心的是THStorage.THTensor, THStorage实现了底层数据(其实就是一个数组), THTensor实现了对底层数据的查看. 2,TH: 核心就THStorage…
一.对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",…
[pytorch学习笔记]-搭建神经网络进行关系拟合 学习自莫烦python 目标 1.创建一些围绕y=x^2+噪声这个函数的散点 2.用神经网络模型来建立一个可以代表他们关系的线条 建立数据集 import torch from torch.autograd import Variable import torch.nn.functional as F import matplotlib.pyplot as plt x=torch.unsqueeze(torch.linspace(-1,1,1…
[pytorch]学习笔记-激励函数 学习自:莫烦python 什么是激励函数 一句话概括 Activation: 就是让神经网络可以描述非线性问题的步骤, 是神经网络变得更强大 1.激活函数是用来加入非线性因素的,解决线性模型所不能解决的问题. 2.激励函数要考虑到线性所收到的约束条件,也就是掰弯线性函数 3.它其实就是另外一个非线性函数. 比如说relu, sigmoid, tanh. 将这些掰弯利器嵌套在原有的结果之上, 强行把原有的线性结果给扭曲了. 使得输出结果 y 也有了非线性的特征…