저는 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보다 큽니다.
첫 번째 행이 의미한다고 생각했습니다. 첫 번째 열 (4.93983855e-04)의 확률이 중간입니까?
sigmoid
활성화는 서로 독립적으로 0과 1 사이의 값을 출력 (outputting)된다.
합계가 1 인 확률 출력을 원하는 경우 softmax
마지막 레이어 에서 활성화를 사용 하면 출력을 합계가 1로 정규화됩니다.
이게 도움이 되길 바란다 :)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다