1. 程式人生 > >matlab multi loss function

matlab multi loss function

MATLAB ——matconvnet ——multi loss function

最近在學習深度學習matlab程式,網上大部分都是對單個目標函式的操作,關於多個目標函式的示例非常少,所以我想在這裡分享給大家。 首先,運用了dagnn模組,這個模組可以更好的擴充網路和修改網路: net = dagnn.DagNN.fromSimpleNN(net, ‘canonicalNames’, true) ;

對於目標函式而言,我運用了兩個目標函式,一個是L1一個是L2,在網路的最後兩層分別定義兩個目標函式:

net.addLayer(‘objective’, dagnn.Loss(‘loss’, ‘l2’), {‘prediction’,‘label’}, ‘objective’) ; net.addLayer(‘objective’, dagnn.Loss(‘loss’, ‘l1’), {‘prediction’,‘label’}, ‘objective’) ;

其中dagnn,Loss(‘loss’,‘l2/l1’) 是作為引數傳入到LOSS函式並在裡面選擇到底是是使用L1還是L2,具體的求LOSS的函式需要自己定義。網路中的主要體現就是這樣。 接下來就是對於兩個目標函式各自佔比例的控制,需要在訓練函式中對其進行初始化。傳入訓練模組中: opts.derOutputs = {‘objective1’ , a , ‘objective2’ , b } ;其中objective1,objective2為兩個分別的目標函式,而後面的a,b為其各自佔的權重,相加為1.這個opts.derOutputs的具體作用為每次反向傳播的時候體現出來,每個Loss乘上對應的權重。