簡單介紹PyTorch中in-place operation的含義
這篇文章主要介紹了淺談PyTorch中in-place operation的含義,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 |
in-place operation在pytorch中是指改變一個tensor的值的時候,不經過複製操作,而是直接在原來的記憶體上改變它的值。可以把它成為原地運算子。
在pytorch中經常加字尾“_”來代表原地in-place operation,比如說.add_() 或者.scatter()。python裡面的+=,*=也是in-place operation。
下面是正常的加操作,執行結束加操作之後x的值沒有發生變化:
import torch x=torch.rand(2) #tensor([0.8284, 0.5539]) print(x) y=torch.rand(2) print(x+y) #tensor([1.0250, 0.7891]) print(x) #tensor([0.8284, 0.5539])
下面是原地操作,執行之後改變了原來變數的值:
import torch x=torch.rand(2) #tensor([0.8284, 0.5539]) print(x) y=torch.rand(2) x.add_(y) print(x) #tensor([1.1610, 1.3789])
在官方問文件中由這一段話:
如果你使用了in-place operation而沒有報錯的話,那麼你可以確定你的梯度計算是正確的。
我們用PyTorch搭建神經網路時,會遇到nn.ReLU(inplace=True),inplace=True是什麼意思呢?
nn.Conv2d(64,192,kernel_size=3,stride=1,padding=1), nn.ReLu(inpalce=True),# inplace為True,預設為False
意思是:是否將計算得到的值直接覆蓋之前的值
例如:x = x+1
即對原值x進行+1操作後得到的值,直接賦值給x
而不是如下找一箇中間變數y:
y=x+1 x=y
先將x進行+1操作後賦值給中間變數y,然後將y值賦給x
這樣就需要記憶體儲存變數y
因此當inplace=True時:
就是對從上層網路nn.Conv2d中傳遞下來的tensor直接進行修改,這樣能夠節省運算記憶體,不用多儲存其他變數。
以上這篇淺談PyTorch中in-place operation的含義就是小編分享給大家的全部內容了,希望能給大家一個參考。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2703597/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 簡單介紹pytorch中log_softmax的實現PyTorch
- pytorch執行錯誤:RuntimeError: a leaf Variable that requires grad is being used in an in-place operationPyTorchErrorUI
- 簡單介紹Rust中的workspaceRust
- 反向代理含義及用途介紹
- mitmproxy中libmproxy簡單介紹MITIBM
- 簡單介紹java中的equals()方法Java
- AOP的簡單介紹
- Webpack 的簡單介紹Web
- form表單的簡單介紹ORM
- Flownet 介紹 及光流的簡單介紹
- Map簡單介紹
- SVG簡單介紹SVG
- Clickjacking簡單介紹
- 【Pandas】簡單介紹
- ActiveMQ簡單介紹MQ
- JSON簡單介紹JSON
- RPC簡單介紹RPC
- Python簡單介紹Python
- KVM簡單介紹
- RMI簡單介紹
- HTML簡單介紹HTML
- HTML 簡單介紹HTML
- JavaScript 簡單介紹JavaScript
- CSS 簡單介紹CSS
- ajax簡單介紹
- 簡單介紹Pytorch實現WGAN用於動漫頭像生成PyTorch
- 函子的簡單介紹
- js迴圈中reduce的用法簡單介紹JS
- 簡單介紹python中的mock介面開發PythonMock
- 簡單介紹SQLserver中的declare變數用法SQLServer變數
- pytorch 包介紹PyTorch
- pytorch簡介PyTorch
- 簡單介紹python中的單向連結串列實現Python
- 簡單介紹Android自定義View實現時鐘功能AndroidView
- 簡單介紹Python中的配對函式zip()Python函式
- 簡單介紹Shell中的定時任務 crontab
- 簡單介紹克隆 JavaScriptJavaScript
- 禪道簡單介紹