我正在上吴安德(Andrew Ng)的机器学习课程,并且在为神经网络实现正则化成本函数时,我们必须计算:
简单地说,忽略偏差单位(第一列),我们必须获得矩阵平方的所有元素的总和。
这是我尝试编写的代码:
reg_theta1 = Theta1(:,2:end);
reg_theta2 = Theta2(:,2:end);
sum_theta1 = sum(sum(reg_theta1.^2 ,2));
sum_theta2 = sum(sum(reg_theta2.^2 ,2));
J = J + (lambda/2*m)*(sum_theta1 + sum_theta2);
但是,我在网上找到了类似的答案:
penalty = (lambda/(2*m))*(sum(sum(Theta1(:, 2:end).^2, 2)) + sum(sum(Theta2(:,2:end).^2, 2)));
J = J + penalty;
那确实返回了正确的结果。 逻辑完全相同,因此语法上肯定有一个错误,但我根本找不到它。
我在做什么错了?
答案 0 :(得分:2)
(lambda/2*m)
= (lambda/2)*m
≠(lambda/(2*m))