使用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沒有交集,所以這部分...