以下八度代码片段的矢量化代码是什么

What is the vectorized code for the following code snippet for octave

任何人都可以帮助我将以下代码转换为矢量化形式吗??

z=X*theta;
g=sigmoid(z);
for i=1:m
  J=J+((-y(i)*log(g(i)))-((1-y(i))*log(1-g(i))));
end

我试过以下方法

z=X*theta;
g=sigmoid(z);
J=J+((-y).*log(g)-((1-y).*log(1-g)));

但这会打印特定值 m 次。还有错误的答案。

J 的答案是 0.693,我可以正确使用 for 循环,但对于矢量化实现,我得到 0.00693。

怎么了? 提前致谢。

您正在获取 J,并将所有 -y(i)*log(g(i))-(1-y(i))*log(1-g(i)) 添加到其中。

所以你需要 J 并添加 (sum) 所有这些东西。

J=J+sum(  (-y).*log(g)-(1-y).*log(1-g)  );