【深度学习_2.1.3】神经网络之梯度检验

论坛 期权论坛 脚本     
匿名技术用户   2020-12-22 15:17   11   0

梯度检验用于检验后向传播正常工作

一维数组模型梯度检验

前向传播,计算损失函数:

J = theta * x

后向传播:

dtheta = x

梯度检验:

首先计算gradapprox:

thetaplus = theta + epsilon
thetaminus = theta - epsilon
J_plus = forward_propagation(x, thetaplus)
J_minus = forward_propagation(x, thetaminus)
gradapprox = (J_plus - J_minus)/(2*epsilon)

然后计算grad

grad = backward_propagation(x, theta)

计算梯度差:


numerator = np.linalg.norm(grad - gradapprox)
denominator = np.linalg.norm(grad) + np.linalg.norm(gradapprox)
difference = numerator/denominator

n维数组模型梯度检验

计算步骤



代码:

thetaplus = np.copy(parameters_values)
thetaplus[i][0] = thetaplus[i][0] + epsilon
J_plus[i], _ = forward_propagation_n(X, Y, vector_to_dictionary(thetaplus))

thetaminus = np.copy(parameters_values)
thetaminus[i][0] = thetaminus[i][0] - epsilon
J_minus[i], _ = forward_propagation_n(X, Y, vector_to_dictionary(thetaminus))

gradapprox[i] = (J_plus[i] - J_minus[i])/(2*epsilon)

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP