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

pytorch的Backward過程用時(shí)太長問題及解決

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

pytorch Backward過程用時(shí)太長

問題描述

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

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

解決方案

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

pytorch的深拷貝方式如下:

tensor_a = tensor_b.clone().detach()

Pytorch backward()簡單理解

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

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. 一般來說,需要標(biāo)量才能求梯度。

3.具體過程如下:

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)文章

最新評(píng)論

麻江县| 民县| 永济市| 弋阳县| 绍兴市| 视频| 奉节县| 苏尼特左旗| 隆德县| 吉水县| 林芝县| SHOW| 芮城县| 崇义县| 惠来县| 新宁县| 南澳县| 武城县| 镇安县| 思南县| 阳西县| 隆子县| 佛坪县| 隆昌县| 西华县| 伊金霍洛旗| 青浦区| 景东| 佛坪县| 睢宁县| 和政县| 修文县| 宜兴市| 东方市| 罗源县| 佛教| 平武县| 和平区| 三门县| 丽江市| 旅游|