-
Notifications
You must be signed in to change notification settings - Fork 251
Expand file tree
/
Copy pathdebug_numerical_gradient.m
More file actions
24 lines (22 loc) 路 980 Bytes
/
Copy pathdebug_numerical_gradient.m
File metadata and controls
24 lines (22 loc) 路 980 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
% Computes the gradient using "finite differences" and gives
% us a numerical estimate of the gradient.
function numgrad = debug_numerical_gradient(gradient_step, theta)
% The following code implements numerical gradient checking, and
% returns the numerical gradient. It sets numgrad(i) to (a numerical
% approximation of) the partial derivative of J with respect to the
% i-th input argument, evaluated at theta. (i.e., numgrad(i) should
% be the (approximately) the partial derivative of J with respect
% to theta(i).)
numgrad = zeros(size(theta));
perturb = zeros(size(theta));
e = 1e-4;
for p = 1:numel(theta)
% Set perturbation vector
perturb(p) = e;
[loss1 gradients1] = gradient_step(theta - perturb);
[loss2 gradients2] = gradient_step(theta + perturb);
% Compute numerical gradient.
numgrad(p) = (loss2 - loss1) / (2 * e);
perturb(p) = 0;
end
end