我正在使用 mobilenets 并試圖理解為什么激活有 16 位以及為什么權重有 8 位的直覺。憑經驗,我看到了,但直觀地說,8 位和 16 位之間巨大差異的原因是什么(除了大多數部署硬體不提供 8 和 16 之間的任何東西,這是一個不同的討論)?AKA 為什么不是激活也是 8 位?
我認為我的部分誤解是我不明白激活在這種情況下意味著什么。權重是通過梯度下降得到優化的部分,但究竟是什么激活?我知道什么是激活函式,例如 sigmoid/relu,但我不明白什么是激活函式,或者為什么除了權重和偏差之外還需要將它們與模型一起存盤(這個鏈接沒有談到,量化偏差對優化也很重要)
https://www.tensorflow.org/lite/performance/model_optimization
uj5u.com熱心網友回復:
激活是通過網路傳播的實際信號。它們與激活函式無關,這只是名稱沖突。它們的準確性更高,因為它們不是模型的一部分,因此它們不會影響存盤、下載大小或記憶體使用,就好像您沒有訓練模型一樣,您永遠不會存盤當前模型之外的激活。
例如,對于 MLP,我們有一些東西
a1 = relu(W1x b1)
a2 = relu(W2a1 b2)
...
an = Wnan-1 bn
其中每個 W 和 b 將是 8 位引數。激活是 a1, ..., an。問題是你只需要前一層和當前層,所以要計算你只需要at-1,而不是以前的,因此在計算程序中以更高的精度存盤它們只是一個很好的權衡。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/482762.html
上一篇:加載在keras中使用lambda調整大小層的模型時出現ValueError
下一篇:為每個值序列生成更小的張量