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