Keras - predict_proba加起来不是1?

时间:2017-03-29 02:46:21

标签: python neural-network keras

我是Keras的新手,这是我的nn:

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。

我认为第1行意味着:第1列(4.93983855e-04)的概率是中等?

1 个答案:

答案 0 :(得分:2)

sigmoid激活正在彼此独立地输出0到1之间的值。

如果您希望概率输出总和为1,请在最后一层使用softmax激活,它会将输出归一化为总和1.

我希望这会有所帮助:)