This question already has answers here:
Cost function in logistic regression gives NaN as a result
                                
                                    (2个答案)
                                
                        
                                2年前关闭。
            
                    
我正在学习Andrew Ng的机器学习课程,目前正在用MATLAB / Octave编写正向传播代码来解决此成本函数:

matlab - 此成本函数是否有矢量化实现?-LMLPHP

目前,我已经以如下的for循环形式编写了它:

for i= 1:m
  for j= 1:num_labels
    J = J + log(ht(j,i))*y(j,i) + log(1-ht(j,i))*(1-y(j,i));
  end
end

J = -J/m;


这样就完成了工作。但是,我想简化这段代码,因为当我感觉可以使用矢量化形式时,在MATLAB中使用for循环总是感到有些“肮脏”。但是for循环看起来很自然,因为有2个求和。

最佳答案

此行应为您提供与上述循环代码相同的结果:

J = -sum(log(ht(:)).*y(:) + log(1-ht(:)).*(1-y(:)))/m;


colon operator (:)用于将每个矩阵整形为列向量,以便在逐元素乘法之后,可以单独调用sum来求和所有结果。

关于matlab - 此成本函数是否有矢量化实现? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43860585/

10-12 21:15