2017-04-13 119 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函数。

此外,为了清楚起见,请不要将您的单行文字称为函数,因为这意味着在编程环境中完全不同。