2017-04-10 36 views
1

作爲一個CNTK學習練習,我想我會修改Logistic迴歸示例從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

我對於入門有一個非常類似的想法,除了我修改了邏輯迴歸的Python教程以創建線性迴歸示例。

我發現邏輯示例中指定的學習率太大,以至於無法與線性迴歸所需的平方誤差損失函數一起使用。因此,作爲第一個建議,我建議您嘗試將learningRatesPerSample降至0.001或更小的值。

我做了一個你看到的錯誤代碼的快速谷歌搜索,並返回this issue,這也表明學習率可能是你的罪魁禍首。

如果您有興趣,我寫了一個blog post關於我在Python中的線性迴歸示例。

+0

謝謝 - 應該考慮一下。我沒有得到方差是如何產生「不是數字」的,但是選擇得不好的學習速度確實會造成問題:)降低速度確實解決了這個問題。 – Mathias

相關問題