您的位置:首页
深度学习 Deep Learning UFLDL 最新Tutorial 学习笔记 4:Debugging: Gradient Checking
2017-07-13 08:25
375 查看
1 Gradient Checking 说明
前面我们已经实现了Linear Regression和Logistic Regression。关键在于代价函数Cost Function和其梯度Gradient的计算。在Gradient的计算中,我们一般採用推导出来的计算公式来进行计算。
可是我们看到,推导出来的公式是复杂的。特别到后面的神经网络,更加复杂。这就产生了一个问题,我们怎样推断我们编写的程序就是计算出正确的Gradient呢?
解决的方法就是通过数值计算的方法来估算Gradient然后与用公式计算出来的数据做对照,假设差距非常小,那么就说明我们的计算是对的。
那么採用什么数值计算方法呢?事实上就是基于最主要的求导公式:
ddθJ(θ)=limϵ→0J(θ+ϵ)−J(θ−ϵ)2ϵ.
我们取epsilon一个非常小的值,那么得到的数据就是导数的近似。
因此g(θ)≈J(θ+EPSILON)−J(θ−EPSILON)2×EPSILON.
2 代码实现
这里我们不须要自己Code,官方已经给出了代码。我们仅仅须要分析一下:这个代码用来计算gradient平均误差% 说明:grad_check 參数 % fun为函数 % num_checks 检查次数 % varagin为參数列 var1,var2,var3...这个varagin必须放在function最后一个项 function average_error = grad_check(fun, theta0, num_checks, varargin) delta=1e-3; sum_error=0; fprintf(' Iter i err'); fprintf(' g_est g f\n') for i=1:num_checks T = theta0; j = randsample(numel(T),1); T0=T; T0(j) = T0(j)-delta; T1=T; T1(j) = T1(j)+delta; [f,g] = fun(T, varargin{:}); %因为fun是linear_regression或logistic_regression f0 = fun(T0, varargin{:}); %所以这里的varagin{:}參数为train.X,train.y f1 = fun(T1, varargin{:}); g_est = (f1-f0) / (2*delta); error = abs(g(j) - g_est); fprintf('% 5d % 6d % 15g % 15f % 15f % 15f\n', ... i,j,error,g(j),g_est,f); sum_error = sum_error + error; end average_error =sum_error/num_checks;
那么在使用中。比方在ex1a_linreg.m中,能够这样使用:
% Gradient Check average_error = grad_check(@linear_regression_vec,theta,50,train.X,train.y); fprintf('Average error :%f\n',average_error);
【本文为原创文章。转载请注明出处:blog.csdn.net/songrotek 欢迎交流哦QQ:363523441】
相关文章推荐
- 深度学习 Deep Learning UFLDL 最新Tutorial 学习笔记 4:Debugging: Gradient Checking
- 深度学习 Deep LearningUFLDL 最新Tutorial 学习笔记 2:Logistic Regression
- 深度学习 Deep Learning UFLDL 最新 Tutorial 学习笔记 1:Linear Regression
- 深度学习 Deep Learning UFLDL 最新Tutorial 学习笔记 3:Vectorization
- 深度学习 Deep Learning UFLDL 最新 Tutorial 学习笔记 1:Linear Regression
- 深度学习 Deep LearningUFLDL 最新Tutorial 学习笔记 2:Logistic Regression
- 深度学习 Deep Learning UFLDL 最新Tutorial 学习笔记 3:Vectorization
- 深度学习 Deep Learning UFLDL 最新Tutorial 学习笔记 5:Softmax Regression
- 深度学习 Deep Learning UFLDL 最新Tutorial 学习笔记 5:Softmax Regression
- [note] deep learning tensorflow lecture 1 notes 深度学习笔记 (1)
- 学习笔记:TensorFlow Wide & Deep Learning Tutorial
- DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
- DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
- [机器学习入门] 李宏毅机器学习笔记-10 (Tips for Deep Learning;深度学习小贴士)
- 深度学习论文笔记-Deep Learning Face Representation from Predicting 10,000 Classes
- [深度学习论文笔记][CVPR 16]Deep Metric Learning via Lifted Structured Feature Embedding
- Joint Deep Learning For Pedestrian Detection(论文笔记-深度学习:行人检测)
- 深度学习论文笔记 [图像处理] Deep Residual Learning for Image Recognition
- [深度学习论文笔记][Scene Classification] Learning Deep Features for Scene Recognition using Places Database
- [深度学习]Deep Residual Learning for Image Recognition(ResNet,残差网络)阅读笔记