吴恩达深度学习第一课第二周作业编程题——follow实验并做出适当更正

Rayna ·
更新时间:2024-09-21
· 916 次阅读

博主【何宽】分享的【优质作业】已经非常完善了,我直接复制完整之后在自己的虚拟机上跑完全没问题,结果相同。只是对他分步演示的部分,在此提出其中一些需要注意的地方。

- 图片无法显示

plt.imshow()并不能让图片显示出来,还需要在后面加上plt.show()才会加载出那个index=25的猫的图片

- 错误提示:

在这里插入图片描述
propagate函数中存在缩进不一致问题,将propagate函数修改成以下形式即可

def propagate(w, b, X, Y): """ 实现前向和后向传播的成本函数及其梯度。 参数: w - 权重,大小不等的数组(num_px * num_px * 3,1) b - 偏差,一个标量 X - 矩阵类型为(num_px * num_px * 3,训练数量) Y - 真正的“标签”矢量(如果非猫则为0,如果是猫则为1),矩阵维度为(1,训练数据数量) 返回: cost- 逻辑回归的负对数似然成本 dw - 相对于w的损失梯度,因此与w相同的形状 db - 相对于b的损失梯度,因此与b的形状相同 """ m = X.shape[1] #正向传播 A = sigmoid(np.dot(w.T,X) + b) #计算激活值,请参考公式2。 cost = (- 1 / m) * np.sum(Y * np.log(A) + (1 - Y) * (np.log(1 - A))) #计算成本,请参考公式3和4。 #反向传播 dw = (1 / m) * np.dot(X, (A - Y).T) #请参考视频中的偏导公式。 db = (1 / m) * np.sum(A - Y) #请参考视频中的偏导公式。 #使用断言确保我的数据是正确的 assert(dw.shape == w.shape) assert(db.dtype == float) cost = np.squeeze(cost) assert(cost.shape == ()) #创建一个字典,把dw和db保存起来。 grads = { "dw": dw, "db": db } return (grads , cost) - 关于optimize函数里面的costs

原文对costs没有详细说明,按我的理解,每调用一次optimize()函数,costs[]都会被初始化(上一次优化得到的costs清空),函数结束时返回的costs是一个数组,存着本次优化(即用更新后的w和b来优化)过程中每100次迭代时所得到的损失函数值。

       costs=[J0 J100 J200 … J1900]
其中J后面的数字n代表第n次迭代,实际上i的值是从0开始的,即0~1999,所以有J0而没有J2000.


作者:泼夫



follow 吴恩达 学习 深度学习

需要 登录 后方可回复, 如果你还没有账号请 注册新账号