以下代码运行通过,仅供参考学习,请勿直接复制使用,对自己负责。
如发现问题,欢迎指正。
nnCostFunction.m
%Part1:
a1 = [ones(m, 1) X];
z2 = a1*Theta1';
a2 = sigmoid(z2);
a2 = [ones(m, 1) a2];
z3 = a2*Theta2';
a3 = sigmoid(z3);
for c= 1:num_labels
J = J+lrCostFunction(Theta2(c,:)', a2 (y==c), lambda);
end
temp1 = Theta1;
temp(:, 1) = 0;
temp2 = Theta2;
temp2(:, 1) = 0;
J = J+lambda/(2*m)*(sum(sum(temp1.^2)) + sum(sum(temp2.^2)));
%Part2:
yk = zeros(m, num_labels);
for c = 1:num_labels
yk(:, c)=(y==c);
end
delta_3 = a3-yk;
delta_2 = delta_3*Theta2.*a2.*(1-a2);
DELTA_2 = delta_3'*a2;
DELTA_1 = delta_2(:, 2:end)'*a1;
Theta1_grad = DELTA_1/m + lambda/m*temp1;
Theta2_grad = DELTA_2/m + lambda/m*temp2;
sigmoidGradient.m
g = sigmoid(z).*(1-sigmoid(z));