2017-04-10 6 views
1

CNTK 학습으로, Logistic Regression 예제를 lr_bs.cntk에서 수정하고 기본적인 선형 회귀 분석을 시도했습니다. 대신 물류 예에서이의기본 선형 회귀 분석 : 훈련 기준은 NaN입니다.

는 :

# parameters to learn 
b = Parameter (LDim, 1)  # bias 
w = Parameter (LDim, SDim) # weights 

# operations 
p = Sigmoid (w * features + b)  

lr = Logistic (labels, p) 
err = SquareError (labels, p) 

# root nodes 
featureNodes = (features) 
labelNodes  = (labels) 
criterionNodes = (lr) 
evaluationNodes = (err) 
outputNodes  = (p) 

... 나는 단순히이에 코드를 변경 :

# operations 
p = (w * features + b) 

lr = SquareError (labels, p) 
err = SquareError (labels, p) 

가 나는 이것이 내가 만든 합성 데이터 세트에 작업을 얻었다. 그러나 Wine Quality 데이터 세트에서 작성한 파일에서 실행 해 보았습니다. 나는 그것을 작동시킬 수 없으며 앞으로 나아갈 방법을 잃어 버리고 있습니다.

기차 명령은 다음과 같은 진단, 실패

EXCEPTION occurred: The training criterion is not a number (NAN). 

나는이 lr이 유효한 숫자를 생산하지 않는 것을 의미하는 것으로 해석한다. 난 그냥 SquareError 실패 할 수있는 방법을 이해하지 못하는 문제를 해결하기 위해 접근하는 방법. 내가 어떤 노골적으로 문제가 데이터 문제를 볼 수 없습니다

|features 7.400 0.700 0.000 1.900 |labels 5.000 
|features 7.800 0.880 0.000 2.600 |labels 5.000 
|features 7.800 0.760 0.040 2.300 |labels 5.000 
|features 11.200 0.280 0.560 1.900 |labels 6.000 
|features 7.400 0.700 0.000 1.900 |labels 5.000 

:

정보를 보려면 여기처럼 데이터 세트가 준비 후 모습입니다. 나는 CNTKTextFormatReader을 사용하여 데이터를 읽었으며 아마도 문제는 데이터 읽기 부분에 있지만 디버깅 없이는 확신 할 수 없다.

이 접근 방법에 대한 조언은 정말 감사하겠습니다.

답변

2

선형 회귀 예제를 만들기 위해 로지스틱 회귀에 대한 파이썬 자습서를 수정한다는 점만 제외하면 시작과 매우 비슷합니다.

로지스틱 예제에 지정된 학습 속도가 선형 회귀 목적에 필요한 제곱 오류 손실 함수와 함께 사용하기에는 너무 큽니다. 따라서 첫 번째 제안으로 learningRatesPerSample을 0.001 이하로 줄이는 것이 좋습니다.

당신이 본 오류 코드에 대한 Google의 빠른 검색을 수행 한 결과 this issue이 반환되었습니다. 학습율이 원인 일 수도 있습니다.

관심이 있으시면 파이썬에서 필자의 선형 회귀 예제에 대해 blog post이라고 적었습니다.

+0

감사합니다. 저는 제곱 오류가 "숫자가 아닌"것을 어떻게 얻을 수 있는지 알지 못했지만 잘못 선택된 학습 속도로 인해 실제로 문제가 발생할 수있었습니다. 속도를 줄이면 문제가 해결되었습니다. – Mathias