欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pytorch的Backward過(guò)程用時(shí)太長(zhǎng)問(wèn)題及解決

 更新時(shí)間:2023年02月20日 08:31:37   作者:Ai_Taoism  
這篇文章主要介紹了pytorch的Backward過(guò)程用時(shí)太長(zhǎng)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

pytorch Backward過(guò)程用時(shí)太長(zhǎng)

問(wèn)題描述

使用pytorch對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練的時(shí)候遇到一個(gè)問(wèn)題,forward階段很快(只需要幾毫秒),backward階段卻用時(shí)很長(zhǎng)(需要十多秒)。

導(dǎo)致這個(gè)問(wèn)題的原因很容易被大家忽視,而且網(wǎng)上基本上沒(méi)有直接的解決方案,經(jīng)過(guò)一天的折騰,總算把導(dǎo)致這個(gè)問(wèn)題的原因搞清楚了。

解決方案

導(dǎo)致這個(gè)問(wèn)題的原因在于訓(xùn)練數(shù)據(jù)的淺拷貝,由于backward過(guò)程中的梯度是和模型推理過(guò)程中的張量相關(guān)的,如果這些張量在被模型使用之前沒(méi)有被深拷貝,意味著backward過(guò)程的會(huì)重復(fù)從這些張量的原始內(nèi)存地址中取值,這個(gè)過(guò)程非常耗時(shí)。所以為了避免這個(gè)問(wèn)題,需要養(yǎng)成一個(gè)好習(xí)慣,就是將張量數(shù)據(jù)輸入模型之前進(jìn)行深拷貝

pytorch的深拷貝方式如下:

tensor_a = tensor_b.clone().detach()

Pytorch backward()簡(jiǎn)單理解

backward()是反向傳播求梯度,具體實(shí)現(xiàn)過(guò)程如下

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)

結(jié)果

tensor([0.6667, 1.3333, 2.0000], dtype=torch.float64)

有幾個(gè)重要的點(diǎn)

1.必須要加上requires_grad=True才能求

2. 一般來(lái)說(shuō),需要標(biāo)量才能求梯度。

3.具體過(guò)程如下:

z是一個(gè)標(biāo)量(1*1矩陣)分別對(duì)x1,x2,x3求偏導(dǎo), 再代入x1,x2,x3的數(shù)值,就是如上程序輸出的結(jié)果

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入理解Python虛擬機(jī)中字節(jié)(bytes)的實(shí)現(xiàn)原理及源碼剖析

    深入理解Python虛擬機(jī)中字節(jié)(bytes)的實(shí)現(xiàn)原理及源碼剖析

    在本篇文章當(dāng)中主要給大家介紹在?cpython?內(nèi)部,bytes?的實(shí)現(xiàn)原理、內(nèi)存布局以及與?bytes?相關(guān)的一個(gè)比較重要的優(yōu)化點(diǎn)——?bytes?的拼接,需要的可以參考一下
    2023-03-03
  • Python3.4學(xué)習(xí)筆記之列表、數(shù)組操作示例

    Python3.4學(xué)習(xí)筆記之列表、數(shù)組操作示例

    這篇文章主要介紹了Python3.4列表、數(shù)組操作,結(jié)合實(shí)例形式分析了Python3.4列表的創(chuàng)建、元素追加、刪除、排序等相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • Python的內(nèi)建模塊itertools的使用解析

    Python的內(nèi)建模塊itertools的使用解析

    這篇文章主要介紹了Python的內(nèi)建模塊itertools的使用解析,itertools是python的迭代器模塊,itertools提供的工具相當(dāng)高效且節(jié)省內(nèi)存,Python的內(nèi)建模塊itertools提供了非常有用的用于操作迭代對(duì)象的函數(shù),需要的朋友可以參考下
    2023-09-09
  • 全面解析Python的While循環(huán)語(yǔ)句的使用方法

    全面解析Python的While循環(huán)語(yǔ)句的使用方法

    這篇文章主要介紹了全面解析Python的While循環(huán)語(yǔ)句的使用方法,是Python入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • numpy concatenate數(shù)組拼接方法示例介紹

    numpy concatenate數(shù)組拼接方法示例介紹

    這篇文章主要介紹了numpy concatenate數(shù)組拼接方法示例介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • python?@property?裝飾器使用方法

    python?@property?裝飾器使用方法

    這篇文章主要介紹了python?@property?裝飾器使用詳細(xì),使用property可以講類(lèi)的方法變成同名屬性,使用起來(lái)更加簡(jiǎn)潔,下文最后舉例說(shuō)明詳情說(shuō)明需要的小伙伴可以參考一下
    2022-03-03
  • python Tkinter的圖片刷新實(shí)例

    python Tkinter的圖片刷新實(shí)例

    今天小編就為大家分享一篇python Tkinter的圖片刷新實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • 7個(gè)關(guān)于Python的經(jīng)典基礎(chǔ)案例

    7個(gè)關(guān)于Python的經(jīng)典基礎(chǔ)案例

    這篇文章主要給大家分享 7個(gè)關(guān)于Python的經(jīng)典基礎(chǔ)案例,列表排序、調(diào)換字典鍵值、刪除列表中的重復(fù)元素、輸出質(zhì)數(shù)、判斷是一年中第幾天、猜數(shù)字、進(jìn)制轉(zhuǎn)換;,需要的朋友可以參考一下
    2021-11-11
  • Python greenlet和gevent使用代碼示例解析

    Python greenlet和gevent使用代碼示例解析

    這篇文章主要介紹了Python greenlet和gevent使用代碼示例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python字典嵌套字典的情況下找到某個(gè)key的value詳解

    python字典嵌套字典的情況下找到某個(gè)key的value詳解

    這篇文章主要介紹了python字典嵌套字典的情況下找到某個(gè)key的value詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07

最新評(píng)論