究竟什么是in-place?它在autograd当中怎么注意? 含grad函数的使用的一个小点

2023-11-06

1.

a[:,0,:,:]+=b[:,0,:,:]

是in-place.

2.

a=a[:,1:,:,:]
不是in-place.

3

a=a.permute(0,3,1,2)
不是in-place.

a view of a leaf Variable that requires grad is being used in an in-place operation.
在具有梯度的不能进行in-place操作,这条torch的禁忌大大阻碍了我的前进。
当requires_grad=True以后,就不能采用in-place操作了。但是在之前是可以的,以下的代码可以运行:


import torch
from torch.autograd import Variable
a =torch.ones((10,3,10,10),dtype=torch.float32)
# a = torch.ones((10,3,10,10),dtype=torch.float32)
a.requires_grad=True
b=torch.mul(a,a)+a
# print(b)
# a[:,0,:,:]+=b[:,0,:,:]
d=torch.zeros((1))
# d[:,:,:,:]=a[:,1:,:,:]
# m=b[0,0,0,1]
d[0]=b[0,0,0,1] # inplace
# m
# t=a[0,0,0,0]
# d[:,:,:,:]=d
# a.permute(0,2,3,1)
mask = torch.zeros_like(a)
mask[0,0,0,1]=1
# gg=grad(b,a,grad_outputs=torch.ones(b.size()))[0]
# print(gg)
mygrad = compute_grad_element_wise(d,a)
mygrad=mygrad*mask
print(mygrad)
print(mask)
print(mask.requires_grad)
print(mygrad.requires_grad)

如果你还拿不准,更通俗一点讲,中括号出现在等号右边不是in-place, 肯定没事,出现在左边就是in-place,要小心。
此外,在grad函数的使用当中,对谁求导,这个“谁”,必须要求不能为in-place形式。前面的y倒是可以随便。
即:
grad(y[0],x,…)是对的
grad(y,x[0],…)是错的

正确代码

gradient=torch.tensor([[1.0],[1.0]])
#后面加[0]可以把tuple变成tensor类型,非常重要
grad_x = torch.autograd.grad(y[0], x, create_graph=True)[0]
print(grad_x) 
# grad_y_x = torch.autograd.grad(grad_x, x,gradient, create_graph=True)
# print(grad_y_x) 

错误代码

gradient=torch.tensor([[1.0],[1.0]])
#后面加[0]可以把tuple变成tensor类型,非常重要
grad_x = torch.autograd.grad(y[0], x[0], create_graph=True)[0]
print(grad_x) 
# grad_y_x = torch.autograd.grad(grad_x, x,gradient, create_graph=True)
# print(grad_y_x) 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

究竟什么是in-place?它在autograd当中怎么注意? 含grad函数的使用的一个小点 的相关文章

  • 【pytorch】torch1.7.1安装、查看torch版本、GPU是否可用

    在conda 虚拟环境下安装torch 61 61 1 7 1 43 GPU版本 本机环境 CUDA 11 0Python 3 7 安装torch1 7 1 官网搜索确认需要下载的对应本机cuda的torch版本 xff0c 使用在线下载即
  • PyTorch:torch.zeros_like()的用法

    作用 xff1a 产生一个与a相同shape的Tensor 举例 xff1a import torch a 61 torch rand 3 4 产生一个3行4列的0 1的随机Tensor b 61 torch zeros like a 产生
  • torch.utils.data.dataloader参数collate_fn简析

    torch utils data DataLoader是pytorch提供的数据加载类 xff0c 初始化函数如下 xff0c torch utils data DataLoader dataset batch size 61 1 shuf
  • torch.normal()

    torch normal means std out 61 None 返回一个张量 xff0c 包含从给定参数means std的离散正态分布中抽取随机数 均值means是一个张量 xff0c 包含每个输出元素相关的正态分布的均值 std是
  • xavier安装torch-gpu

    1 查看xavier安装的jetpack版本 xff1a sudo apt show nvidia jetpack 一般情况下都是462的 2 查看cuda版本 xff1a cat usr local cuda version txt 3
  • pytorch计算模型参数量报错:size mismatch for module.conv1.weight: copying a param with shape torch.Size([16, 3

    错误 RuntimeError Error s in loading state dict for DataParallel size mismatch for module conv1 weight copying a param wit
  • Docker部署AI算法教程

    docker上部署算法除了一些推理框架外 有时候会自己用torch推理加上一些web应用 下面写下自己用的一套方法 Docker cuda10 1 miniconda3 torch1 7 1 docker要求19 03以上才支持cuda 1
  • conda环境中配置cuda+cudnn+pytorch深度学习环境

    本文参考 在conda虚拟环境中配置cuda cudnn pytorch深度学习环境 新手必看 简单可行 conda安装cudnn 江江ahh的博客 CSDN博客 一 创建虚拟环境 conda create n mytorch python
  • (18)语义分割--paddle--EISeg自动标注软件的使用和自己数据集的测试

    1 主要参考 1 使用过程 建议先看一下下面博主的视频 eiseg简单教学 哔哩哔哩 bilibili 2 软件使用 主要参考 百度飞浆EISeg高效交互式标注分割软件的使用教程 Leonard2021的博客 CSDN博客 安装eiseg
  • Torch安装

    安装步骤参考官网http torch ch docs getting started html 安装过程中可能遇见的问题 1 执行命令 git clone https github com torch distro git torch re
  • TorchServe环境构建+模型更新+新模型注册

    目录 1 背景 2 torchserve环境搭建 2 1jdk环境搭建 2 2 python 环境搭建 2 3 启动服务 2 3 1 注册模型 2 3 2 模型查看 2 3 3 接口调用 3 进阶功能 3 1 模型多版本管理 3 2 新模型
  • 如何按第一维对张量进行排序

    我有一个 2D 张量 我想按第一个维度排序 如下例所示 a torch FloatTensor 5 5 5 3 3 5 6 4 3 7 我预计排序后的结果是这样的 a torch FloatTensor 3 5 3 7 5 3 5 5 6
  • 从一维张量中提取前 k 个值索引

    给定 Torch 中的一维张量 torch Tensor 包含可以比较的值 比如浮点 我们如何提取顶部的索引k该张量中的值 除了暴力方法之外 我还在寻找 Torch lua 提供的一些 API 调用 它可以有效地执行此任务 截至拉取请求 4
  • Databricks 笔记本挂着 pytorch

    我们遇到 Databricks 笔记本问题 我们的一个笔记本单元似乎挂起 而驱动程序日志确实显示该笔记本单元已被执行 有谁知道为什么我们的笔记本单元一直挂起并且无法完成 请参阅下面的详细信息 情况 我们正在训练 ML 模型pytorch在
  • 如何基于二值掩模裁剪图像

    我使用 torch 和一些语义分割算法来生成分割图像的二进制掩码 然后我想根据该蒙版裁剪图像 为了清楚起见 我需要在每个像素的基础上裁剪它 这似乎是一个简单的问题 但我能想到的唯一解决方案是反转draw mask类似于 Coco API 中
  • 需要下一状态传播进行反向传播的神经网络强化学习

    我正在尝试构建一个包含卷积和 LSTM 使用 Torch 库 的神经网络 以通过 Q 学习或优势学习进行训练 这两者都需要在更新状态 T 的权重之前通过网络传播状态 T 1 必须进行额外的传播会降低性能 这很糟糕 但不是too坏的 然而 问
  • Torch / Lua,如何将训练好的神经网络模型保存到文件?

    我从事一个 Torch Lua 项目 在其中实现了一个人工神经网络模型 一切正常 但现在我想按以下方式修改我的代码 由于我的输入数据集非常大 我想将其划分为 N 20 个跨度 然后我只想在第一个数据集跨度上训练我的神经网络 然后并行测试其他
  • AttributeError:“_MultiProcessingDataLoaderIter”对象没有属性“next”

    我正在尝试使用加载数据集Torch Dataset and DataLoader 但我收到以下错误 AttributeError MultiProcessingDataLoaderIter object has no attribute n
  • Raspberry 上的 Libtorch 无法加载 pt 文件,但可以在 ubuntu 上运行

    我正在尝试在 Raspberry PI 上使用 libtorch 构建 C 程序 该程序在 Ubuntu 上运行 但在 Raspberry 上构建时出现以下错误 error use of deleted function void torc
  • 通过 Conda 安装 PyTorch

    目标 使用 pytorch 和 torchvision 创建 conda 环境 Anaconda 导航器 1 8 3 python 3 6 MacOS 10 13 4 我尝试过的 在Navigator中 创建了一个新环境 尝试安装 pyto

随机推荐

  • GPU基数排序(CUDA radix sort)

    GPU基数排序 CUDA radix sort 引言 基数排序是具有固定迭代次数的排序算法 其通过对最低位到最高位的一一比较 对数值排序 本文将介绍基数排序的并行实现方法 主要包括并行基数排序 并行合并 并行归约这三种算法 本文全部代码连接
  • CentOS7.x 安装 openssh8.4、openssl1.1.1

    1 升级准备工作 1 1 查看系统版本和ssh版本 cat etc redhat release ssh V 1 2 需要将openssh升级到最新版本 直接yum安装即可 yum install openssh y 可以看已经升级到7 4
  • GCC+makefile+GDB工具

    GCC编译器 以c文件main c sub c和add c和头文件my fun h为例 代码为 1 main c include
  • 西门子200系列PLC学习课程大纲(课程筹备中)

    西门子200系列PLC学习课程大纲如下表所示 共106课 关注我 让你从菜鸟变大神 第1课 西门子200PLC概述 S7 200 PLC新特性是什么 第2课 S7 200 PLC的CPU模块介绍 第3课 S7 200 PLC编程软件介绍 第
  • jquery 访问手机摄像头_jQuery webcam plugin调用摄像头

    简介 原来做项目遇到了调用摄像头功能 php小白遇到这情况立刻就去网上搜索 最后用的 https www helloweba com vie 太烂了 作者也没说如何去使用 如果用的是框架开发更是很麻烦 今天再次发现一款比较灵活的插件jQue
  • qt帮助文档的查看(入门)

    qt帮助文档介绍
  • 语音编码之压缩

    我的书 购买链接 京东购买链接 淘宝购买链接 当当购买链接 这本书里叙述了SILK和Opus语音编解码器 这里简单的串接编解码的核心知识点 LPC LPC Linear predictive coding 在音频和语音处理领域常用于表示压缩
  • Python使用open读取文件时,如何不带换行符(\n)

    在读入一些用文本文档存储的数据时 一般都会在每一行存储一个数据 当我们用python自带的open和readlines读取每行的数据时 是会将每一行结尾的换行符 n 读入的 如下 test text txt内容 dataA dataB da
  • R语言 决策树--预测模型

    决策树 算法的目标是建立分类预测模型或回归预测模型 是一种预测模型 按目标不同可以细分为分类树和回归树 因为在展示的时候 类似于一棵倒置的树而得名 如下图 基本概念 根节点 如上图中最上方 一棵决策树只有一个根节点 中间节点 位于中间的节点
  • 找不到msvcp140.dll无法继续执行代码是什么原因?如何修复呢?

    想和大家分享一个常见的问题 找不到msvcp140 dll无法继续执行代码是什么原因 这个问题可能会让你感到困惑和烦恼 但是请放心 我会提供5个修复方法 并在最后告诉你修复完成以后需要注意的事项 找不到 msvcp140 dll 无法继续执
  • SylixOS系统如何永久修改IP地址

    1 进入 etc目录 找到startup sh文件 通过FTP下载该文件 2 用vs打开startup sh文件 将IP配置信息写入文件 保存 退出 我修改的是en2网口的IP地址 3 将修改后的startup sh文件通过FTP重新传输到
  • scrapy框架讲解

    简介 Scrapy是一个基于Python的开源异步爬虫框架 它被广泛用于从网页或App中 提取数据并将其保存到本地或数据库 由2 8版本以后提供了 http2 0协议的爬虫支持 扩展 scrapy是基于twisted框架开发而来 twist
  • C语言实现二叉树--->二叉查找树

    声明 代码实现都是自己写的 而且没有借鉴别人的代码 也没有看任何教程 只看了下二叉树的具体定义 知道大概是个什么东西 说这些只是为了说明下列代码实现肯定不是最优的 甚至在你们看来都是很垃圾的代码 不过没关系 因为这是我自己动脑筋写出来的 记
  • cmd /c /k

    cmd c dir 是执行完dir命令后关闭命令窗口 cmd k dir 是执行完dir命令后不关闭命令窗口 cmd c start dir 会打开一个新窗口后执行dir指令 原窗口会关闭 cmd k start dir 会打开一个新窗口后
  • 【串口屏】迪文的串口屏下载程序SD卡如何格式化

    用SD卡下载程序到迪文的串口屏需要先将SD卡格式化 而直接鼠标右键快速格式化这种方式不行 必须通过字符命令行格式化才行 即运行 cmd命令 具体如下 SD卡需要格式化成屏能识别的格式 开始 运行 输入cmd进入DOS系统 输入format
  • (二)vue.js的设计模式

    概述 Vue js在设计上采用mvvm模式进行设计 mvvm模式刚出来时一度的被人奉为神一般的模式 好像不懂mvvm模式就脱离了时代一样 什么是mvvm模式呢 Mvvm的全称为 Model View ViewModel m表示数据模型层 v
  • JavaScript 导出CSV文件

    列标题 逗号隔开 每一个逗号就是隔开一个单元格 var str 项目名称 项目信息 n for let i 0 i lt checkedItems length i var data checkedItems i str data Item
  • mysqlbackup企业版物理备份工具使用

    MySQL Enterprise Backup 简称MEB MEB8 对应的是MySQL8 0版本 8 0 28 备份工具的版本和MySQL版本要一致 MEB8 新特性 参考链接 https dev mysql com doc mysql
  • Java设计模式——建造者模式

    文章目录 为什么要有建造者模式 建造者模式 为什么要有建造者模式 工厂类模式提供的是创建单个类的模式 而建造者模式则是将各种产品集中起来进行管理 用来创建复合对象 所谓复合对象就是指某个类具有不同的属性 建造者模式与工厂模式的区别 工厂模式
  • 究竟什么是in-place?它在autograd当中怎么注意? 含grad函数的使用的一个小点

    1 a 0 b 0 是in place 2 a a 1 不是in place 3 a a permute 0 3 1 2 不是in place a view of a leaf Variable that requires grad is