Keras - predict_proba 加起来不等于 1?

use*_*751 0 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'])
Run Code Online (Sandbox Code Playgroud)

我有 3 个输出:高、中或低。

当我尝试使用该predict函数时,我得到了正确的类:

array(['medium', 'low', 'medium', ..., 'low', 'medium', 'low'], dtype=object)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试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)
Run Code Online (Sandbox Code Playgroud)

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

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

Nas*_*Ben 6

所述sigmoid激活0和1之间彼此独立地outputing值。

如果您想要总和为 1 的概率输出,请使用softmax最后一层的激活,它会将输出归一化为总和为 1。

我希望这有帮助 :)