这个成本函数是否有向量化的实现? [duplicate]

我正在学习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));  endendJ = -J/m;

这样可以完成任务。然而,我希望简化这段代码,因为在MATLAB中使用for循环时,我总觉得有点“脏”,我觉得应该可以使用向量化的形式。但由于有两个求和,for循环似乎是自然的选择。


回答:

以下这行代码应该可以得到与您上面循环代码相同的结果:

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

使用冒号运算符(:)将每个矩阵重塑为列向量,这样在元素-wise乘法后,可以通过一次调用sum来将所有结果相加。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注