2

Я пытаюсь реализовать версию софтмакса потери триплета в Caffe, описанную в
Hoffer and Ailon, Deep Metric Learning Using Triplet Network, ICLR 2015.Расчет градиента для версии с потерей триплета для softmax

Я пробовал это, но мне трудно вычислить градиент, так как L2 в экспоненте не квадрат.

Может кто-нибудь, пожалуйста, помогите мне здесь?

ответ

3

Реализация нормы L2 с использованием существующих слоев CAFFE может спасти вас все толкаются.

Вот один из способов вычислить ||x1-x2||_2 в CAFFE для "нижних" с x1 и x2 (при условии, x1 и x2 являются BC сгустков матрицы с размерностью, вычислительные B норм для C мерных diff)

layer { 
    name: "x1-x2" 
    type: "Eltwise" 
    bottom: "x1" 
    bottom: "x1" 
    top: "x1-x2" 
    eltwise_param { 
    operation: SUM 
    coeff: 1 coeff: -1 
    } 
} 
layer { 
    name: "sqr_norm" 
    type: "Reduction" 
    bottom: "x1-x2" 
    top: "sqr_norm" 
    reduction_param { operation: SUMSQ axis: 1 } 
} 
layer { 
    name: "sqrt" 
    type: "Power" 
    bottom: "sqr_norm" 
    top: "sqrt" 
    power_param { power: 0.5 } 
} 

Для триплетной потери, определенной в документе, вам необходимо вычислить норму L2 для x-x+ и для x-x-, объединить эти две капли и подавать конкат-блоб на слой "Softmax".
Нет необходимости в вычислениях грязного градиента.

+1

@Naman, если вы собираетесь использовать кофе, лучше переходите через существующие слои: это ваши строительные блоки! чем лучше вы их знаете, тем легче будет ваша жизнь! – Shai

+0

Еще одна вещь, это больше о использовании памяти Caffe. Если мне нужно выполнить нормализацию L2, каково было бы это сделать? Я могу сделать сокращение, за которым следует изменение, за которым следуют слоты eltwise, но будет ли больше голода, чем реализация целого в одном слое? – Naman

+0

Я пытался реализовать это решение, находящее одну проблему. Бумага рода делает евклидовую потерю. Итак, после Softmax, нужно ли выводить результат на Euclidean loss layer? – Naman

1

Это математический вопрос, но здесь он идет. Первое уравнение - это то, к чему вы привыкли, а второе - то, что вы делаете, когда оно не в квадрате.

Derivation of norm

+0

Вы не можете разделить на 2 номинатор и знаменатель? – Shai

+1

, конечно, вы можете, я просто включил всю вещь, чтобы избежать путаницы. – Photon

Смежные вопросы