2017-03-29 122 views
0

我是新来Keras,这是我的NN:Keras - predict_proba不加起来1?

model = Sequential() 
model.add(Dense(12, activation="relu", input_dim=12, kernel_initializer="normal")) 
model.add(Dense(3, activation="sigmoid", kernel_initializer="normal")) 
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) 

我有3个输出:高,中,低。

当我试图用predict功能,我得到正确的类:

array(['medium', 'low', 'medium', ..., 'low', 'medium', 'low'], dtype=object) 

然而,当我试图predict_proba功能,我会得到不加起来1的概率?

array([[ 4.93983855e-04, 2.28181913e-01, 9.70774710e-01], 
     [ 3.14530940e-03, 9.60477769e-01, 3.79752717e-04], 
     [ 1.40661141e-03, 5.70683666e-02, 9.96348858e-01], 
     ..., 
     [ 1.29012510e-01, 7.08254218e-01, 2.44960701e-03], 
     [ 1.69786233e-02, 4.71719205e-02, 9.90665674e-01], 
     [ 1.28657368e-04, 9.89430904e-01, 9.04915680e-04]], dtype=float32) 

的第一行是4.93983855e-04 + 2.28181913e-01 + 9.70774710e-01,总和为1.199450606855,这是大于1

我认为第一行是指:的概率第一列(4.93983855e-04)中等?

回答

2

sigmoid激活是相互独立地输出介于0和1之间的值。

如果你想凝聚了1的概率输出,使用softmax激活你的最后一层上,将标准化输出总结为1

我希望这有助于:)

+0

谢谢,有用! – user1157751