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)的概率是中等?
所述sigmoid激活0和1之间彼此独立地outputing值。
如果您想要总和为 1 的概率输出,请使用softmax最后一层的激活,它会将输出归一化为总和为 1。
我希望这有帮助 :)