当我运行这段代码时(在 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
是什么,我也许能够更好地进行故障排除。如果您对该功能有任何意见,请随时指出问题所在。
只要您有一个语句(在函数内部或其他方式(不以分号结尾,该语句的输出将显示在终端上。
假设这是您正在运行的唯一代码,那么我的猜测是,在您的sigmoid
函数中有一个这样的语句:
g = dosomething() % note: not semicolon terminated!
导致在执行期间出现终端输出。
在终端中报告两次g
的事实也是有意义的,因为您在刚刚编写的表达式中调用了两次sigmoid
函数。
另外,为了清楚起见,请不要将单行代码称为函数,因为这在编程上下文中意味着完全不同的东西。