2017-04-10 12 views
1

CNTK学習の練習として、ロジスティック回帰の例を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以下の値に減らすことをお勧めします。

私は、あなたが見たエラーコードを素早くGoogle検索して、this issueを返しました。これは学習率があなたの犯人かもしれないことを示唆しています。

興味があれば、私は線形回帰の例についてPythonでblog postと書いています。

+0

ありがとうございました - それについて考えてください。私は正方形のエラーが「数字ではない」ということをどうやって得ることができなかったのですが、学習率が悪いと実際に問題が起こる可能性があります。 – Mathias