2012-05-06 4 views
0

fminuncが返す' User objective function returned complex;新しい点を試してみてください... 'iter-detailed'がオンになっています。私はそれが私のコスト関数のためであることを知っています、何らかの理由で複雑なコンポーネントを返しています(正確にはJ = NaN + NaNiを返しています)。なぜこれをやっているのか、どのように修正できるのか、どんなアイデア? P.P.私は非常に大きな設定機能(約1000)を持っています、それは最大値または精度を超えている可能性がありますか? P.コスト関数&勾配:matlab:fminuncは 'User objective function returned complexを返します。新しい点を試してみてください... '

hyp = sigmoid(X * theta); 
reg = (lambda/(2*m))*sum((theta(2:end).^2)); 

J = (1/m * sum((-y .* log(hyp)) - ((1-y) .* log(1-hyp)))) + reg; 

grad(1) = (1/m * ((hyp-y)' * X(:,1)))'; 
grad(2:end) = (1/m * ((hyp-y)' * X(:,2:end)))' + (lambda/m * theta(2:end)); 

答えて

1

あなたはバグの奇妙な合流当たっている万が一:

  • シグモイド(Xの*シータ)が1よりも負以上であるが(あなたに複雑なを与えるだろうあなたがその行を3行目にしたときの一部)。そしてmまたはyのいずれかがNaNであるかどうかを決定する。

これまで気づいたことはありませんでしたが、NaNが複素数とやりとりする場合は、「複雑な」NaNが得られます。

>> (1+2i) * nan 

ans = 

     NaN + NaNi 
+0

mは列車の数であり、yは0または1です。したがって、2番目の部分は、最初のものは何かになります。画像ファイルを読み込んでいて、ピクセル値の場合、matlabはほとんど負の値を返しています。私は範囲を見つける必要があるので、私はそれを正の値に拡大することができます。 – cubearth

+0

そして私はRGBをLabに変換しています。それでエラーがどこに来ているのでしょうか。 – cubearth