week5 Neural Network Learning

以下代码运行通过,仅供参考学习,请勿直接复制使用,对自己负责。

如发现问题,欢迎指正。

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));


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值