任何人都可以帮我将以下代码转换为矢量化形式吗?
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。
出了什么问题? 提前谢谢。
答案 0 :(得分:1)
您正在使用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) );