centerloss之中心點計算

以minist爲例:
中心點有2種計算方式:
方式1:
人算:
批次取400,平均每批次每個數字有400/10=40個點,如果取40個點的中心爲每批次訓練的中心,數據太少,誤差大, 所以先定義一個隊列,隊列長度爲400*20,前20個週期不訓練中心損失,只訓練分類損失,把每批次網絡計算的點(形狀爲【400,2】)裝進隊列,從第20個週期開始,計算隊列裏對應數字的中心,然後以此中心計算中心損失,因爲隊列先進先出的特性,隨着訓練進行,新數據進入隊列,早期數據將被拋棄。
這種方式比較麻煩,實現複雜,且訓練慢。
方式2:
網絡自己算:
自定義centerloss損失函數類,類的可訓練參數採用正態分佈初始化,此方式如果不自定義backword函數,則訓練此網絡有2個優化器,一個優化網絡參數,另一個優化損失函數類實例參數,定義backword函數需要自己計算梯度,比較麻煩。
啓示:
損失函數也可帶有可訓練參數,prelu就是其中之一。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章