pytorch的Backward过程用时太长问题及解决
作者:Ai_Taoism 发布时间:2022-12-11 00:16:06
标签:pytorch,Backward,过程
pytorch Backward过程用时太长
问题描述
使用pytorch对网络进行训练的时候遇到一个问题,forward阶段很快(只需要几毫秒),backward阶段却用时很长(需要十多秒)。
导致这个问题的原因很容易被大家忽视,而且网上基本上没有直接的解决方案,经过一天的折腾,总算把导致这个问题的原因搞清楚了。
解决方案
导致这个问题的原因在于训练数据的浅拷贝,由于backward过程中的梯度是和模型推理过程中的张量相关的,如果这些张量在被模型使用之前没有被深拷贝,意味着backward过程的会重复从这些张量的原始内存地址中取值,这个过程非常耗时。所以为了避免这个问题,需要养成一个好习惯,就是将张量数据输入模型之前进行深拷贝
pytorch的深拷贝方式如下:
tensor_a = tensor_b.clone().detach()
Pytorch backward()简单理解
backward()是反向传播求梯度,具体实现过程如下
import torch
x=torch.tensor([1,2,3],requires_grad=True,dtype=torch.double)
y=x**2
z=y.mean()
z.backward()
print(x.grad)
结果
tensor([0.6667, 1.3333, 2.0000], dtype=torch.float64)
有几个重要的点
1.必须要加上requires_grad=True才能求
2. 一般来说,需要标量才能求梯度。
3.具体过程如下:
z是一个标量(1*1矩阵)分别对x1,x2,x3求偏导, 再代入x1,x2,x3的数值,就是如上程序输出的结果
来源:https://blog.csdn.net/ahhhhhh520/article/details/124864850
0
投稿
猜你喜欢
- 前言最近做了几个简单的爬虫python程序,于是就想做个窗口看看效果。首先是,窗口的话,以前没怎么接触过,就先考虑用Qt制作简单的ui。这里
- Ø 基本常用查询 --select select * from student; --all 查询所有 select
- <?php function getDerivativeByFormulaAndXDATA($formula, $x_data){ $
- 一、打开摄像头import cv2import numpy as npdef video_demo(): capture = c
- 本文实例为大家分享了php微信跳一跳的具体代码,供大家参考,具体内容如下<?php require 'config.php&#
- 我使用的Python3.5,32版本win764位系统,pandas0.19版本,使用df=pd.read_clipboard()的时候读不
- 前言配置火狐浏览器对应的selenium驱动一、火狐浏览器驱动下载下载地址根据对应的系统环境下载相应的压缩包(这里下载的是Windows系统
- 1、切片使用切片来实现列表的倒序排序,mylist[start:end:step],不改变原列表。#!/usr/bin/env python
- 最近脱离了googlecolab想使用本地的anaconda进行机器学习课题的演练,在安装tensorflow时报错 : Unsatisfi
- 在查找数据集的时候发现,并不是所有的数据集都是以csv的格式存储,也就是每一列特征数据的分割并不是都以逗号分割,有的数据格式是以空格为分割例
- photoshop快捷键大全: 工具箱(多种工具共用一个快捷键的可同时按【Shift】加此快捷键选取)相关文章:网页设计软件FrontPag
- 连接 Redisimport redisc连接方式:redis提供了2个方法1:StrictRedis:实现大部分官方的命令2:Redis:
- vue 百度地图 + 定位 前提需要自己有百度的密钥,如没有可以去百度地图申请一、在主目录下的index.html引入js,例如:
- 1. watch 与 computed 的巧妙结合如上图,一个简单的列表页面。你可能会这么做: created(){ this.
- 本文实例为大家分享了js实现带积分的弹球小游戏的具体代码,供大家参考,具体内容如 * :如果小球与底部方块的角碰撞,积分可能有些许bug<
- Mr.Think是一个喜欢简洁的人,喜欢如诗一样的代码.不喜欢.NET的代码,就是因为经常看到同事用VS后生成出来的一段段冗长的代码.在我的
- 目录前言typeof是否能正确判断类型?instanceof是否能正确判断类型?Object.prototype.toString.call
- 最近 全栈数据工程师养成攻略 的微信群已经将近500人,开了二群之后为了打通不同微信群之间的消息,花了点时间做了个消息同步机器人,在任意群收
- 1、问题描述:在学习北京大学曹健老师的tensorflow2.0笔记的时候,遇到了[Errno 2] No such file or dir
- 1> 如何在浏览器地址栏前添加自定义的小图标?你是不是记得有时在浏览网易网站的首页时,在地址WWW.PUTAOJIAYUAN.COM前