一、Deeplearning-assignment
神经网络的反向传播很复杂,在某些时候需要对反向传播算法进行验证,以证明确实有效,这时我们引入了“梯度检测”。
反向传播需要计算梯度 , 其中θ表示模型的参数。J是使用前向传播和损失函数计算的。因为前向传播实现相对简单, 所以确信J的计算正确。现在让我们回头来看一下导数(或者梯度)的定义:
考虑一维线性函数 J(θ)=θx,该模型只包含一个实值参数θ, 并采取x作为输入。
你将实现代码去计算 J(.)和它的导数,然后你将使用“Gradient Checking”去确保你关于J的导数计算是正确的。
梯度检测原理:
二、相关算法代码
import numpy as np
from week1.testCases import gradient_check_n_test_case
from gc_utils import sigmoid, relu, dictionary_to_vector, vector_to_dictionary, gradients_to_vector
def forward_propagation(x, theta):
"""
:param x: a real-valued input
:param theta:our parameter, a real number as well
:return:J -- the value of function J, computed using t