有人能帮我把下面的代码转换成矢量形式吗??
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)) 对它。
-y(i)*log(g(i))-(1-y(i))*log(1-g(i))
所以你需要 J 和添加( sum )所有这些事情。
J
sum
J=J+sum( (-y).*log(g)-(1-y).*log(1-g) );