【学习笔记】cs231n-assignment1-two_layer_net

本文介绍了作者完成斯坦福cs231n第一份作业two_layer_net的心路历程,包括计算scores、loss、反向传播计算梯度的步骤及遇到的问题,以及训练函数和预测函数的实现。通过调试和超参数调优,作者探讨了神经网络中正向传播和反向传播的理解,并分享了调试技巧和超参数重要性的认识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

    大家好,我是Kay,小白一个。以下是我完成斯坦福 cs231n-assignment1-two_layer_net 这份作业的做题过程、思路、踩到的哪些坑、还有一些得到的启发和心得。希望下面的文字能对所有像我这样的小白有所帮助。

       两层的网络处理方法与之前的SVM/Softmax 的处理方法类似,关键在于函数和梯度的计算。

 

TODO1:计算 scores

 

       【思路】公式是:W2 * max(0, W1*x) 用代码实现之即可。

   scores_hid = np.dot(X, W1) + b1

   scores_hid = np.maximum(0, scores_hid)

   scores =np.dot(scores_hid, W2) + b2

        结果正确。

 

 

TODO2:计算 loss

 

       【思路】用 softmax 的公式,不要忘记加上正则惩罚项。

    scores = scores - np.max(scores, axis = 1,keepdims=True)

    exp_sum = np.sum(np.exp(scores), axis = 1,keepdims=True)

    loss = -np.sum(scores[range(N), y]) +np.sum(np.log(exp_sum))

    loss = loss / N + 0.5 * reg * (np.sum(W1 *W1) + np.sum(W2 * W2))

 

        【开始 Debug】

       这个 bug 我是找得真是要气死自己啊!感觉公式都没记错啊!Run 了好几次 loss 还是不够小,郁闷之下跑去百度,贴了别人的代码结果 loss 也是这么多但是他们的结果很小,喵喵喵?我定眼一看,别人的 reg 都是 0.1!凭什么我给的是0.05。想哭、难受。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值