今天开始写博客哈,记录一下学习生活,这是第一篇。
解释一下,keep_prob是一个概率,表示保留下来的节点数(<=1)
前向传播:
D1 = np.random.rand(A1.shape[0],A1.shape[1]) #步骤1:初始化矩阵D1 = np.random.rand(..., ...)
D1 = D1 < keep_prob #步骤2:将D1的值转换为0或1(使用keep_prob作为阈值)
A1 = A1 * D1 #步骤3:舍弃A1的一些节点(将它的值变为0或False)
A1 = A1 / keep_prob #步骤4:缩放未舍弃的节点(不为0)的值
反向传播:
dA2 = dA2 * D2
dA2 = dA2 / keep_prob
顺便温习一下之前的:
前向传播:
Z1 = np.dot(W1, X) + b1
A1 = reg_utils.relu(Z1)
反向传播:
dZ3 = A3 - Y
dW3 = (1 / m) * np.dot(dZ3, A2.T)
db3 = (1 / m) * np.sum(dZ3, axis=1, keepdims=True)
dA2 = np.dot(W3.T, dZ3)
dZ2 = np.multiply(dA2, np.int64(A2 > 0))
dW2 = 1. / m * np.dot(dZ2, A1.T)
db2 = 1. / m * np.sum(dZ2, axis=1, keepdims=True)
以上内容参考:
---------------------
版权声明:本文为CSDN博主「何宽」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013733326/article/details/79847918