当我运行此代码时(在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
,Octave输出:
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
是什么,我可能会更好地排除故障。如果你对功能有任何意见,请不要犹豫,指出什么是错的。)
答案 0 :(得分:1)
每当你有一个语句(在函数内或其他方面)没有以分号结尾时,该语句的输出将显示在终端上。
假设这是您运行的唯一代码,那么我的猜测是sigmoid
函数内部有这样的声明:
g = dosomething() % note: not semicolon terminated!
在执行期间导致终端输出。
在终端中报告g
两次这一事实也是有道理的,因为你在刚写的那个表达式中调用sigmoid
函数两次。
另外,为了清楚起见,请不要将您的单行内容称为功能,因为这意味着在编程环境中完全不同。