You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
1.1 KiB
Matlab
30 lines
1.1 KiB
Matlab
10 years ago
|
function numgrad = computeNumericalGradient(J, theta)
|
||
|
%COMPUTENUMERICALGRADIENT Computes the gradient using "finite differences"
|
||
|
%and gives us a numerical estimate of the gradient.
|
||
|
% numgrad = COMPUTENUMERICALGRADIENT(J, theta) computes the numerical
|
||
|
% gradient of the function J around theta. Calling y = J(theta) should
|
||
|
% return the function value at theta.
|
||
|
|
||
|
% Notes: 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 = J(theta - perturb);
|
||
|
loss2 = J(theta + perturb);
|
||
|
% Compute Numerical Gradient
|
||
|
numgrad(p) = (loss2 - loss1) / (2*e);
|
||
|
perturb(p) = 0;
|
||
|
end
|
||
|
|
||
|
end
|