如果有乙個多工多loss的網路,那麼在訓練時,loss是如何工作的呢?
比如下面:
model = model(inputs =
input
, outputs =
[y1, y2]
)l1 =
0.5l2 =
0.3model.
compile
(loss =
[loss1, loss2]
, loss_weights=
[l1, l2],...)
其實我們最終得到的loss為
final_loss = l1 * loss1 + l2 * loss2
我們最終的優化效果是最小化final_loss。
問題來了,在訓練過程中,是否loss2只更新得到y2的網路通路,還是loss2會更新所有的網路層呢?
此問題的關鍵在梯度回傳上,即反向傳播演算法。
對於x1引數的更新:
∂ fi
nall
oss∂
x1=l
1∗∂l
oss1
∂x1+
l2∗∂
loss
2∂x2
\frac=\frac + \frac
∂x1∂fi
nall
oss
=∂x1
l1∗∂
loss
1+∂
x2l2
∗∂lo
ss2
對於x2引數的更新:
∂ fi
nall
oss∂
x2=l
2∗∂l
oss2
∂x2\frac= \frac
∂x2∂fi
nall
oss
=∂x2
l2∗∂
loss
2對於x2引數的更新:
∂ fi
nall
oss∂
x1=l
1∗∂l
oss1
∂x1\frac= \frac
∂x1∂fi
nall
oss
=∂x1
l1∗∂
loss
1所以loss1只對x1和x2有影響,而loss2只對x1和x3有影響。
參考:
QT 多目錄多工程 配置
因為專案中我們需要把模組分的比較明確,這樣既方便大家分工合作,也方便日後模組重複使用。昨天初次摸索了一下,碰到了bug。解決了後,決定把這種開發方式和大家分享一下。新建工程時,我們選擇 other project subdirs project 這個工程即建立乙個完整的父工程,在父工程下包含很多子工...
多工 同步
實現多工之間通訊的最簡便的辦法是使用共享的資料結構。雖然共享資料區簡化了任務間的通訊,但是必須保證 每個任務在處理共享資料時的排他性。以避免競爭和資料破壞。共享資源滿足互斥性的一般方法有 1.關中斷,開中斷 2.使用測試並置位指令 3.禁止做任務切換 4.利用訊號量 一.關中斷 開中斷 這估計是最簡...
多工學習
最近一段時間multitask網路比較流行,比如做人臉檢測的時候,乙個網路完成 人臉和非人臉 二分類任務的同時也要進行boudingbox回歸或者人臉關鍵點回歸。以人臉檢測mtcnn為例,乙個網路包含三個任務。訓練的時候,乙個batch中的,一部分用於二分類 一部分用於boundingbox 回歸,...