訓練過程中,記憶體占用一直公升高的原因

2021-10-12 12:53:49 字數 858 閱讀 8121

使用pytorch做模型壓縮

如下圖所示,訓練過程中記憶體占用一直不斷公升高。

一會記憶體就漲為了下圖所示:

經常篩查,發現問題出現在下述**中:

for w, flag, op in

zip(weights,flags,self._ops)

:if flag >=2:

result += w * op(x)

self._resource_size[index]

= op.size

self._resource_flops[index]

= op.flops

self._resource_mac[index]

= op.mac

self._resource_channel[index]

= op.c_out * w

index +=

1

經過更詳細的篩查,發現問題出在 下面這句:

self._resource_channel[index]

= op.c_out * w

尚不清楚原因!!!

將上面這句修改為下述之後,就沒問題了:

self._resource_channel[index]

= op.c_out

不明原因!!!

的訓練過程 模型訓練過程中累計auc

在平時計算auc的時候,大都是使用 sklearn.metrics.roc auc score 來計算。一般操作是將每個batch 出來的結果 拼接起來,然後扔到該函式中計算。但是如果測試集量級過大 比如 10億量級 每個樣本的 結果拼接起來之後至少需要 3g記憶體。這個開銷顯然不是我們想要的。有什...

訓練過程中的train,val,test的區別

train是訓練集,val是訓練過程中的測試集,是為了讓你在邊訓練邊看到訓練的結果,及時判斷學習狀態。test就是訓練模型結束後,用於評價模型結果的測試集。只有train就可以訓練,val不是必須的,比例也可以設定很小。test對於model訓練也不是必須的,但是一般都要預留一些用來檢測,通常推薦比...

訓練過程中的train,val,test的區別

train是訓練集,val validation的簡稱 是訓練過程中的測試集,是為了讓你在邊訓練邊看到訓練的結果,及時判斷學習狀態。test是訓練模型結束後,用於評價模型結果的測試集。其中,只有train是需要訓練的,val和test不是必須的。一般的,val的資料集和train沒有交集,所以這部分...