8

Tôi đang cố gắng sử dụng caffe để thực hiện tổn thất ba lần được mô tả trong Schroff, Kalenichenko and Philbin "FaceNet: A Unified Embedding for Face Recognition and Clustering", 2015.Công thức gradient truyền trở lại mất ba chiều là gì?

Tôi mới làm điều này để làm thế nào để tính toán gradient trong tuyên truyền trở lại?

+1

Tôi thấy có một PR mở triển khai tổn thất này: https://github.com/BVLC/caffe/pull/3663 – Shai

Trả lời

14

tôi giả sử bạn định nghĩa các lớp mất mát như

layer { 
    name: "tripletLoss" 
    type: "TripletLoss" 
    bottom: "anchor" 
    bottom: "positive" 
    bottom: "negative" 
    ... 
} 

Bây giờ bạn cần phải tính toán một gradient w.r.t mỗi "đáy" s.

Sự mất mát được cho bởi:
enter image description here

Gradient wrt "neo" đầu vào (fa):
enter image description here

Gradient wrt "tích cực" đầu vào (fp):
enter image description here

Độ dốc chèn đầu vào "phủ định" (fn):
![enter image description here


Việc tính toán ban đầu (tôi rời khỏi đây vì lý do tình cảm ...)

enter image description here

Xin xem comment chỉnh các hạn cuối cùng.

+4

Cái cuối cùng, độ dốc của "âm", không nên là 2 (fa - fn))? –

+0

@MickeyShine có bạn đã đúng. – Shai

+0

@MickeyShine bạn nên xem xét việc thực hiện ['EucleadianLossLayer'] (https://github.com/BVLC/caffe/blob/master/src/caffe/layers/euclidean_loss_layer.cpp) để xem cách tính toán này có thể được thực hiện trong caffe. – Shai

Các vấn đề liên quan