最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在pytorch中實(shí)現(xiàn)只讓指定變量向后傳播梯度

 更新時間:2020年02月29日 10:43:26   作者:美利堅(jiān)節(jié)度使  
今天小編就為大家分享一篇在pytorch中實(shí)現(xiàn)只讓指定變量向后傳播梯度,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

pytorch中如何只讓指定變量向后傳播梯度?

(或者說如何讓指定變量不參與后向傳播?)

有以下公式,假如要讓L對xvar求導(dǎo):

(1)中,L對xvar的求導(dǎo)將同時計(jì)算out1部分和out2部分;

(2)中,L對xvar的求導(dǎo)只計(jì)算out2部分,因?yàn)閛ut1的requires_grad=False;

(3)中,L對xvar的求導(dǎo)只計(jì)算out1部分,因?yàn)閛ut2的requires_grad=False;

驗(yàn)證如下:

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Wed May 23 10:02:04 2018
@author: hy
"""
 
import torch
from torch.autograd import Variable
print("Pytorch version: {}".format(torch.__version__))
x=torch.Tensor([1])
xvar=Variable(x,requires_grad=True)
y1=torch.Tensor([2])
y2=torch.Tensor([7])
y1var=Variable(y1)
y2var=Variable(y2)
#(1)
print("For (1)")
print("xvar requres_grad: {}".format(xvar.requires_grad))
print("y1var requres_grad: {}".format(y1var.requires_grad))
print("y2var requres_grad: {}".format(y2var.requires_grad))
out1 = xvar*y1var
print("out1 requres_grad: {}".format(out1.requires_grad))
out2 = xvar*y2var
print("out2 requres_grad: {}".format(out2.requires_grad))
L=torch.pow(out1-out2,2)
L.backward()
print("xvar.grad: {}".format(xvar.grad))
xvar.grad.data.zero_()
#(2)
print("For (2)")
print("xvar requres_grad: {}".format(xvar.requires_grad))
print("y1var requres_grad: {}".format(y1var.requires_grad))
print("y2var requres_grad: {}".format(y2var.requires_grad))
out1 = xvar*y1var
print("out1 requres_grad: {}".format(out1.requires_grad))
out2 = xvar*y2var
print("out2 requres_grad: {}".format(out2.requires_grad))
out1 = out1.detach()
print("after out1.detach(), out1 requres_grad: {}".format(out1.requires_grad))
L=torch.pow(out1-out2,2)
L.backward()
print("xvar.grad: {}".format(xvar.grad))
xvar.grad.data.zero_()
#(3)
print("For (3)")
print("xvar requres_grad: {}".format(xvar.requires_grad))
print("y1var requres_grad: {}".format(y1var.requires_grad))
print("y2var requres_grad: {}".format(y2var.requires_grad))
out1 = xvar*y1var
print("out1 requres_grad: {}".format(out1.requires_grad))
out2 = xvar*y2var
print("out2 requres_grad: {}".format(out2.requires_grad))
#out1 = out1.detach()
out2 = out2.detach()
print("after out2.detach(), out2 requres_grad: {}".format(out1.requires_grad))
L=torch.pow(out1-out2,2)
L.backward()
print("xvar.grad: {}".format(xvar.grad))
xvar.grad.data.zero_()

pytorch中,將變量的requires_grad設(shè)為False,即可讓變量不參與梯度的后向傳播;

但是不能直接將out1.requires_grad=False;

其實(shí),Variable類型提供了detach()方法,所返回變量的requires_grad為False。

注意:如果out1和out2的requires_grad都為False的話,那么xvar.grad就出錯了,因?yàn)樘荻葲]有傳到xvar

補(bǔ)充:

volatile=True表示這個變量不計(jì)算梯度, 參考:Volatile is recommended for purely inference mode, when you're sure you won't be even calling .backward(). It's more efficient than any other autograd setting - it will use the absolute minimal amount of memory to evaluate the model. volatile also determines that requires_grad is False.

以上這篇在pytorch中實(shí)現(xiàn)只讓指定變量向后傳播梯度就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • flask框架使用orm連接數(shù)據(jù)庫的方法示例

    flask框架使用orm連接數(shù)據(jù)庫的方法示例

    這篇文章主要介紹了flask框架使用orm連接數(shù)據(jù)庫的方法,結(jié)合實(shí)例形式分析了flask框架使用flask_sqlalchemy包進(jìn)行mysql數(shù)據(jù)庫連接操作的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-07-07
  • Python面向?qū)ο笾鄳B(tài)原理與用法案例分析

    Python面向?qū)ο笾鄳B(tài)原理與用法案例分析

    這篇文章主要介紹了Python面向?qū)ο笾鄳B(tài)原理與用法,結(jié)合具體案例形式分析了Python多態(tài)的具體功能、原理、使用方法與操作注意事項(xiàng),需要的朋友可以參考下
    2019-12-12
  • 利用python在excel里面直接使用sql函數(shù)的方法

    利用python在excel里面直接使用sql函數(shù)的方法

    今天小編就為大家分享一篇利用python在excel里面直接使用sql函數(shù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python實(shí)現(xiàn)批量備份交換機(jī)配置+自動巡檢

    Python實(shí)現(xiàn)批量備份交換機(jī)配置+自動巡檢

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)批量備份交換機(jī)配置+自動巡檢的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • Pycharm最新激活碼2019(推薦)

    Pycharm最新激活碼2019(推薦)

    這篇文章主要介紹了Pycharm最新激活碼2019,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • 基于python內(nèi)置函數(shù)與匿名函數(shù)詳解

    基于python內(nèi)置函數(shù)與匿名函數(shù)詳解

    下面小編就為大家分享一篇基于python內(nèi)置函數(shù)與匿名函數(shù)詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • springboot配置文件抽離 git管理統(tǒng) 配置中心詳解

    springboot配置文件抽離 git管理統(tǒng) 配置中心詳解

    在本篇文章里小編給大家整理的是關(guān)于springboot配置文件抽離 git管理統(tǒng) 配置中心的相關(guān)知識點(diǎn)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2019-09-09
  • Python數(shù)據(jù)分析之?Matplotlib?3D圖詳情

    Python數(shù)據(jù)分析之?Matplotlib?3D圖詳情

    本文主要介紹了Python數(shù)據(jù)分析之Matplotlib 3D圖詳情,Matplotlib提供了mpl_toolkits.mplot3d工具包來進(jìn)行3D圖表的繪制,下文總結(jié)了更多相關(guān)資料,需要的小伙伴可以參考一下
    2022-05-05
  • Python 工具類實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳功能詳解

    Python 工具類實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳功能詳解

    用python進(jìn)行大文件下載的時候,一旦出現(xiàn)網(wǎng)絡(luò)波動問題,導(dǎo)致文件下載到一半。如果將下載不完全的文件刪掉,那么又需要從頭開始,如果連續(xù)網(wǎng)絡(luò)波動,是不是要頭禿了。本文提供斷點(diǎn)續(xù)傳下載工具方法,希望可以幫助到你
    2021-10-10
  • Django項(xiàng)目uwsgi+Nginx保姆級部署教程實(shí)現(xiàn)

    Django項(xiàng)目uwsgi+Nginx保姆級部署教程實(shí)現(xiàn)

    這篇文章主要介紹了Django項(xiàng)目uwsgi+Nginx保姆級部署教程實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04

最新評論

什邡市| 汉中市| 额敏县| 开封县| 开鲁县| 澄江县| 太仆寺旗| 沙坪坝区| 新竹市| 胶州市| 乌鲁木齐县| 六枝特区| 聂拉木县| 陇西县| 商丘市| 慈溪市| 望奎县| 尤溪县| 通城县| 平遥县| 贞丰县| 永昌县| 浦县| 阿荣旗| 拉孜县| 东兰县| 慈溪市| 麻阳| 中方县| 无锡市| 河源市| 崇仁县| 高雄县| 海丰县| 沙湾县| 建湖县| 广汉市| 若尔盖县| 高邑县| 肇东市| 康平县|