除了模型架構外, 也可嘗試優化優化器
如果選用某個模型架構了, 超參數已經嘗試錯誤中, 自認找到不錯的參數集, 那還有無優化空間嗎?
在 Gradient Centralization: A New Optimization Technique for Deep Neural Networks 對應 github 可以看到一絲光明...
簡略的說, 只要運用其 Optimizer 就可以在 Training 與 Testing 在許多圖像相關任務上, 以及不同的資料集, 都取得可觀的進步. 幾乎是沒有任何代價的. 相見恨晚, 可惜沒能在先前專案用上.
那使用上會有門檻嗎? 我們主要用 Tensorflow, github 已經有發表, 幾個動作, 先安裝
pip install gradient-centralization-tf
然後只要:
model.compile(optimizer = gctf.optimizers.rmsprop(learning_rate = 0.01, rho = 0.91), ...)
或者稍微複雜的寫法:
opt = tf.keras.optimizers.Adam(learning_rate=0.1)
opt.get_gradients = gctf.centralized_gradients_for_optimizer(opt)
model.compile(optimizer = opt, ...)
也就是原來模型相關的代碼無須更動, 就是把optimizer小改為使用模組提供的.
那如果手癢想自己開發centralized gra呢? 用 keras 也簡單. 在 Tensorflow 升級 2.8版後, gradient-centralization-tf 並不支援此版本, 所以也只能用下面的Class.