是否存在此成本函数的矢量化实现?

时间:2017-05-09 03:30:29

标签: matlab machine-learning vectorization

我正在阅读Andrew Ng关于机器学习的课程,目前正在MATLAB / Octave中编写一个前向传播代码来解决这个成本函数:

enter image description here

目前,我已经用这样的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循环似乎很自然,因为有两个总结。

1 个答案:

答案 0 :(得分:1)

这一行应该给你与上面的循环代码相同的结果:

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

colon operator (:)用于将每个矩阵重新整形为列向量,以便在逐元素乘法后,可以使用sum的单个调用来累加所有结果。