Keras의 model.predict 함수 출력은 무엇을 의미합니까?


14

Quora 공식 데이터 세트에서 중복 질문을 예측하기 위해 LSTM 모델을 만들었습니다. 테스트 레이블은 0 또는 1입니다. 1은 질문 쌍이 중복되었음을 나타냅니다. 를 사용하여 모델을 빌드 한 후 테스트 데이터를 model.fit사용하여 모델을 model.predict테스트합니다. 출력은 아래와 같은 값의 배열입니다.

 [ 0.00514298]
 [ 0.15161049]
 [ 0.27588326]
 [ 0.00236167]
 [ 1.80067325]
 [ 0.01048524]
 [ 1.43425131]
 [ 1.99202418]
 [ 0.54853892]
 [ 0.02514757]

배열의 처음 10 개 값만 표시합니다. 이 값의 의미와 각 질문 쌍의 예상 레이블이 무엇인지 이해하지 못합니까?


1
! 나는 당신이 당신의 네트워크에 문제가 있다고 생각 .. 확률 규모 0-1에 있어야합니다 ..하지만 당신은 1.99을, 당신이 뭔가 잘못 생각 ..
GHANEM

답변:


8

신경망의 출력은 기본적으로 절대로 이진수 (예 : 0 또는 1)가되지 않습니다. 네트워크는 경사 하강 프레임 워크에서 손실을보다 자유롭게 최적화하기 위해 연속 값 (이산 아님)으로 작동합니다.

몇 가지 코드를 보여주는 유사한 질문 을 여기에서 살펴보십시오 .

조정 및 스케일링이 없으면 네트워크 출력이 공칭 값 측면에서 입력 범위 어딘가에 떨어질 수 있습니다. 귀하의 경우에는 대략 0과 2 사이 인 것 같습니다.

이제 임계 값에 따라 위의 값을 0 또는 1로 바꾸는 함수를 작성할 수 있습니다. 예를 들어 값의 범위를 [0, 1] 범위로 조정 한 다음 값이 0.5보다 작 으면 0을, 0.5보다 크면 1을, 1을 반환하십시오.


고맙게도 레이블을 분류하기 위해 임계 값을 사용하는 것을 생각했습니다. 그러나 임계 값이 결정된 기준은 무엇입니까?
Dookoto_Sea

@Dookoto_Sea 당신은 스스로 결정해야
제레미 농포

@Dookoto_Sea 라벨이 0 또는 1 인 경우, 값의 범위가 [0, 2] 인 흥미로운 예측 값을 갖는 범위 내에 있어야합니다. 모델 출력을 변경해야합니다.
Jérémy Blain

7

이것이 분류 문제라면 2 개의 출력 뉴런을 갖도록 네트워크를 변경해야합니다.

다음을 사용하여 레이블을 one-hot 인코딩 된 벡터로 변환 할 수 있습니다

y_train_binary = keras.utils.to_categorical(y_train, num_classes)
y_test_binary = keras.utils.to_categorical(y_test, num_classes)

그런 다음 출력 레이어에 softmax 활성화 기능이있는 두 개의 뉴런이 있는지 확인하십시오.

model.add(Dense(num_classes, activation='softmax'))

이것은 당신 model.predict(x_test_reshaped)이 목록의 배열 이 될 것 입니다. 내부 목록은 각 클래스에 속하는 인스턴스의 확률입니다. 이것은 1을 더할 것이고 결정된 레이블은 가장 높은 확률을 가진 출력 뉴런이어야합니다.

Keras는이를 라이브러리에 포함하므로이 비교를 직접 수행 할 필요는 없습니다. 을 사용하여 클래스 레이블을 직접 가져올 수 있습니다 model.predict_classes(x_test_reshaped).


3
"이것이 분류 문제라면 당신은 2 개의 출력 뉴런을 갖도록 네트워크를 변경해야한다.".. 죄송합니다 Jah.
Ghanem

@Minion, 두 가지 방법은 본질적으로 동일하며 단일 출력 뉴런과 관련하여 필요한 임계 값은 네트워크에 암시 적으로 포함됩니다. 따라서 이진 출력을 제공합니다.
JahKnows

1
그렇습니다. .. 나는 단지 "2 개의 출력 뉴런을 갖도록 네트워크를 변경해야한다"고 언급했기 때문에 논평했습니다. .. 고맙습니다
Ghanem

1

예측은 훈련 결과 및 활성화 기능으로 공급 한 내용을 기반으로합니다.

예를 들어, 이진수 교차 엔트로피 손실이있는 출력에 대해 0-1 입력 및 시그 모이 드 활성화 기능을 사용하면 1의 확률을 얻게됩니다. 이러한 확률을 다룹니다 (예 : 확률이 0.5보다 크거나 이미 0.1보다 높을 경우 범주 "1"예측).

당신이 묘사 한 것에서, 당신은 0-1 개의 입력을 가지고 아마도 아마도 출력 계층에 대한 선형 활성화를 가정했을 것입니다 (아마도 평균 제곱 오류 손실이 있습니까?). 즉, 출력이 직접 예측 된 숫자 ( 에서 임의의 숫자 일 수 있음) 인 회귀 문제를 가정했습니다 . 의도 한 것이 아니고 원하는 것을 가정 할 수 있습니다. 대신 첫 번째 단락에서 언급했습니다.(,

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.