4

Я работаю над реализацией Хинтонской дистилляции знаний paper. Первым шагом является сохранение мягких целей «громоздкой модели» с более высокой температурой (т. Е. Мне не нужно обучать сеть, просто нужно сделать пересылку вперед на изображение и сохранить мягкие мишени с температурой T).
Есть ли способ получить выходные данные сокетов Alexnet или googletet, но с другой температурой?
Мне нужно изменить soft-max с помощью pi= exp(zi/T)/sum(exp(zi/T).
Необходимо разделить выходы окончательного полностью подключенного слоя с температурой T. Мне это нужно только для форварда (не для обучения).Caffe: Softmax с температурой

+0

Опубликовано ссылка на бумагу Хинтона @Shai –

ответ

2

Я считаю, что есть три варианта решения этой проблемы

1. реализовать свой собственный Softmax слой с температурным параметром. Должно быть достаточно прямо изменить код softmax_layer.cpp, чтобы принять во внимание «температуру» T. Возможно, вам потребуется настроить файл caffe.proto, чтобы разрешить разбор Softmax с дополнительным параметром.

2. Внедрите слой как python layer.

3. Если вам нужен только вперед проход, т.е. «выделение признаков», то вы можете просто выход, как показывает «верх» слой перед тем в SoftMax слой и сделать SoftMax с температурой наружного CAFFE в целом.

4. Вы можете добавить Scale слой до верхнего слоя Softmax:

layer { 
    type: "Scale" 
    name: "temperature" 
    bottom: "zi" 
    top: "zi/T" 
    scale_param { 
    filler: { type: 'constant' value: 1/T } # replace "1/T" with the actual value of 1/T. 
    } 
    param { lr_mult: 0 decay_mult: 0 } # make sure temperature is fixed 
} 
layer { 
    type: "Softmax" 
    name: "prob" 
    bottom: "zi/T" 
    top: "pi" 
} 
+0

Спасибо. Я думаю, что попробую первый вариант. –

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