为什么Octave输出$ g = [......] $

时间:2017-04-13 06:15:18

标签: machine-learning octave linear-algebra

当我运行此代码时(在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是什么,我可能会更好地排除故障。如果你对功能有任何意见,请不要犹豫,指出什么是错的。)

1 个答案:

答案 0 :(得分:1)

每当你有一个语句(在函数内或其他方面)没有以分号结尾时,该语句的输出将显示在终端上。

假设这是您运行的唯一代码,那么我的猜测是sigmoid函数内部有这样的声明:

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

在执行期间导致终端输出。

在终端中报告g两次这一事实也是有道理的,因为你在刚写的那个表达式中调用sigmoid函数两次。

另外,为了清楚起见,请不要将您的单行内容称为功能,因为这意味着在编程环境中完全不同。