Neural network Caffe:Softmax随温度变化
我正在实施Hinton的知识提炼。第一步是存储温度较高的“笨重模型”的软目标(即,我不需要训练网络,只需要对每个图像进行前向传递,并存储温度为Neural network Caffe:Softmax随温度变化,neural-network,deep-learning,caffe,conv-neural-network,softmax,Neural Network,Deep Learning,Caffe,Conv Neural Network,Softmax,我正在实施Hinton的知识提炼。第一步是存储温度较高的“笨重模型”的软目标(即,我不需要训练网络,只需要对每个图像进行前向传递,并存储温度为t)的软目标。 有没有一种方法可以在不同温度下获得Alexnet或googlenet软目标的输出? 我需要使用pi=exp(zi/T)/sum(exp(zi/T) 需要将最终完全连接层的输出除以温度T。我只需要在向前传球时使用它(不用于训练)。我认为有三种方法可以解决此问题 1。使用一个温度参数实现您自己的Softmax层。修改的代码以考虑“温度”T,应该
t
)的软目标。有没有一种方法可以在不同温度下获得Alexnet或googlenet软目标的输出?
我需要使用
pi=exp(zi/T)/sum(exp(zi/T)
需要将最终完全连接层的输出除以温度
T
。我只需要在向前传球时使用它(不用于训练)。我认为有三种方法可以解决此问题
1。使用一个温度参数实现您自己的Softmax
层。修改的代码以考虑“温度”T
,应该非常简单。您可能还需要调整,以允许使用一个额外参数解析Softmax
层
2.将该层作为一个整体实施
3.如果您只需要向前传递,即“提取特征”,那么您只需在softmax层之前将层的“顶部”作为特征输出,然后在caffe之外的温度下进行softmax
4。您可以在顶部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"
}
发布了Hinton's paper@ShaiThank you的链接。我想我会尝试第一种选择。