2017-04-13 6 views
0

Iは(コーセラのプログラミング割り当てに)このコードを実行する:m = length(y)は、yはm次元ベクトルである

J = 1/m * [-y.*log(sigmoid((theta)'*X))-(1-y).*log(1-sigmoid((theta)'*X))] 

Xがm * 2行列であり、theta = 0.1、オクターブ出力:

g何ですか
g = 

    [long (#rows)*2 matrix, each entry <1 but extremely close to 1] 

g = 

    [another long (#rows)*2 matrix as before] 

J = 

    [(#rows)*2 matrix with entries such as 3.4932e-002 and 7.8914e-005] 

?私は決してそれを定義していない、それは私のコードに表示されていない、いくつかの一見無関係な数字で出力されますか? (機能自体に問題があるかもしれないことは知っていますが、それは私がここに興味を持っているものとは別の問題です。関数は何か間違っていることを躊躇しないでください)

+1

組み込み関数ではない関数 'sigmoid'を2回呼び出します。そのためには、表示される出力を生成するOctaveコードが必要です。 – FTP

答えて

1

セミコロンで終わっていないステートメント(関数内など)があれば、そのステートメントの出力が端末に表示されます。その実行中に、端末出力が得られ

g = dosomething() % note: not semicolon terminated! 

:これはあなたが実行しているだけのコードであると仮定すると

は、その後、私の推測では、あなたのsigmoid関数の中で、この種の文があるということです。

gが端末で2回報告されているという事実も、sigmoid関数を2回書いた式で呼び出すので意味があります。

また、1ライナーをファンクションとして参照しないようにしてください。これはプログラミングの面で全く異なることを意味するためです。

関連する問題