代码之家  ›  专栏  ›  技术社区  ›  Rochak Agrawal

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

  •  -1
  • Rochak Agrawal  · 技术社区  · 6 年前

    有人能帮我把下面的代码转换成矢量形式吗??

    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。

    怎么了? 提前谢谢。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ander Biguri    6 年前

    您正在获取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)  );