2017-04-13 60 views
0

當運行該代碼(在編程的分配爲Coursera):

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

其中m = length(y)y是m維向量,X是一個m×2矩陣,和theta = 0.1,八度輸出:

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] 

什麼是g?我從來沒有定義過它,它並沒有出現在我的代碼中,而是輸出一些看起來不相關的數字? (我知道這個函數本身可能有問題,但這與我在這裏感興趣的問題是分開的,我想如果我知道g是什麼,我可能會更好地排除故障。函數,請不要猶豫,指出什麼是錯誤的。)

+1

您有兩個對函數「sigmoid」的調用,它不是內置函數。所以必須有一些Octave的代碼,它會產生你看到的輸出。 – FTP

回答

1

無論何時你有一個語句(在一個函數內或其他地方)不以分號結尾,該語句的輸出將顯示在終端上。

假設這是你正在運行的唯一的代碼,然後我的猜測是,你sigmoid函數內部有這樣的一種說法:

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

導致端子輸出它的執行過程中。

g在終端報告兩次的事實也是有意義的,因爲您在剛寫入的表達式中調用了兩次sigmoid函數。

此外,爲了清楚起見,請不要將您的單行文字稱爲函數,因爲這意味着在編程環境中完全不同。