有谁知道在Caffe softmax层内发生了什么计算?
我正在使用预先训练好的网络,最后有一个softmax图层。
在测试阶段,对于图像的简单前进,倒数第二层(" InnerProduct")的输出如下: -0.20095,0.39989,0.22510,-0.36796,-0.21991,0.43291,-0.22714,-0.22229,-0.08174,0.01931,-0.05791,0.21699,0.00437,-0.02350,0.02924,-0.28733,0.19157,-0.04191,-0.07360,0.30252
最后一层(" Softmax")输出是以下值: 0.00000,0.44520,0.01115,0.00000,0.00000,0.89348,0.00000,0.00000,0.00002,0.00015,0.00003,0.00940,0.00011,0.00006,0.00018,0.00000,0.00550,0.00004,0.00002,0.05710
如果我在内部产品图层的输出上应用Softmax(使用外部工具,如matlab),我会得到以下值: 0.0398,0.0726,0.0610,0.0337,0.0391,0.0751,0.0388,0.0390,0.0449,0.0496,0.0460,0.0605,0.0489,0.0476,0.0501,0.0365,0.0590,0.0467,0.0452,0.0659
后者对我有意义,因为概率加起来为1.0(注意Caffe的Softmax图层值的总和> 1.0)。
显然,Caffe中的softmax层不是一个直接的Softmax操作。
(我认为它没有任何区别,但我只想提一下,我正在使用预先训练过的flickr风格网络,请参阅说明here)。
编辑:
这是proto txt中最后两层的定义。请注意,最后一层的类型是" Softmax"。
Bank account1;
if(choice.equals("n"))
account1 = new Bank();
else
{
System.out.println("Enter your initial balance :");
double ibalance = scanner.nextDouble();
account1 = new Bank(ibalance);
}
答案 0 :(得分:1)
你得到的结果很奇怪
"Softmax"
图层的forward
方法执行的操作是:
(注意,执行前两个步骤是为了防止计算中出现溢出)。