这个成本函数是否有向量化的实现? [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

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

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