为什么 Octave 会输出 $ g = [... ...] $
Why does Octave output $ g = [... ...] $
当我 运行 此代码(在 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
是什么,我可能能够更好地解决问题。如果你对功能有任何意见,请不要犹豫,指出哪里不对。)
只要你有一个语句(在函数内部或其他地方)没有以分号结束,该语句的输出将显示在终端上。
假设这是您 运行 的唯一代码,那么我的猜测是在您的 sigmoid
函数中有这样一条语句:
g = dosomething() % note: not semicolon terminated!
在执行期间导致终端输出。
g
在终端中被报告两次这一事实也是有道理的,因为您在刚刚编写的表达式中调用了 sigmoid
函数两次。
此外,为了清楚起见,请不要将您的一行称为 函数 ,因为这在编程上下文中意味着完全不同的东西。
当我 运行 此代码(在 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
是什么,我可能能够更好地解决问题。如果你对功能有任何意见,请不要犹豫,指出哪里不对。)
只要你有一个语句(在函数内部或其他地方)没有以分号结束,该语句的输出将显示在终端上。
假设这是您 运行 的唯一代码,那么我的猜测是在您的 sigmoid
函数中有这样一条语句:
g = dosomething() % note: not semicolon terminated!
在执行期间导致终端输出。
g
在终端中被报告两次这一事实也是有道理的,因为您在刚刚编写的表达式中调用了 sigmoid
函数两次。
此外,为了清楚起见,请不要将您的一行称为 函数 ,因为这在编程上下文中意味着完全不同的东西。