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_checksT = 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_regressionf0 = 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;endaverage_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】

转载于:https://www.cnblogs.com/llguanli/p/7158577.html

深度学习 Deep Learning UFLDL 最新Tutorial 学习笔记 4:Debugging: Gradient Checking相关推荐

  1. 机器学习(Machine Learning)深度学习(Deep Learning)资料(Chapter 2)

    机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2) - tony的专栏 - 博客频道 - CSDN.NET 注:机器学习资料篇目一共 ...

  2. 【深度学习Deep Learning】资料大全

    感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答.求职一站式搞定! 对商业智能BI.大数据分析挖掘.机器学习, ...

  3. 机器学习(Machine Learning)深度学习(Deep Learning)资料汇总

    本文来源:https://github.com/ty4z2008/Qix/blob/master/dl.md 机器学习(Machine Learning)&深度学习(Deep Learning ...

  4. 深度学习Deep Learning 资料大全

    转自:http://www.cnblogs.com/charlotte77/ [深度学习Deep Learning]资料大全 最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: ...

  5. 机器学习(Machine Learning)深度学习(Deep Learning)资料【转】

    转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...

  6. 机器学习(Machine Learning)深度学习(Deep Learning)资料集合

    机器学习(Machine Learning)&深度学习(Deep Learning)资料 原文链接:https://github.com/ty4z2008/Qix/blob/master/dl ...

  7. 机器学习 Machine Learning 深度学习 Deep Learning 资料

    机器学习(Machine Learning)&深度学习(Deep Learning)资料 機器學習.深度學習方面不錯的資料,轉載. 原作:https://github.com/ty4z2008 ...

  8. 大量机器学习(Machine Learning)深度学习(Deep Learning)资料

    机器学习目前比较热,网上也散落着很多相关的公开课和学习资源,这里基于课程图谱的机器学习公开课标签做一个汇总整理,便于大家参考对比. 1.Coursera上斯坦福大学Andrew Ng教授的" ...

  9. 机器学习(Machine Learning)amp;深度学习(Deep Learning)资料

    机器学习(Machine Learning)&深度学习(Deep Learning)资料 機器學習.深度學習方面不錯的資料,轉載. 原作:https://github.com/ty4z2008 ...

最新文章

  1. OpenAI解析「AI算力」:3个半月翻一倍,6年超过30万倍
  2. Leetcode 622. 设计循环队列 解题思路及C++实现
  3. 数据结构源码笔记(C语言):堆排序
  4. 【C++】欧几里德算法快速求最大公约数
  5. 获取系统URL访问的前三名(通过Scala方式实现/通过Spark方式实现),Spark将URL访问日志进行分类并通过自定义Partitioner的方式将文件写入到不同分区上
  6. 【Qt】Qt5.9连接MySQl5.7(亲自测试成功)
  7. 客户要求ASP.NET Core API返回特定格式,怎么办?(续)
  8. php yii 命令行,命令行模式(Command)
  9. ncurses关于颜色系统:start_color(),has_colors(),init_pair(),color_content(),pait_content()
  10. 利用aiowebsocket库爬取websocket实例:莱特币官网
  11. 大数据可视化有什么作用
  12. 数据科学 IPython 笔记本 六、SciPy 统计推断
  13. 窃听信道模型中的保密通信性能研究
  14. 蛙人高频交易拆单策略—蛙人高频软件结构及使用说明
  15. 关于手机号不能登录微信解决办法
  16. GIF图像格式简介(87a和89a)(C语言生成GIF图像)
  17. Node.js 静态web服务
  18. editor上传视频无法播放的问题
  19. linux 复制文件提示略过目录xxx
  20. android 有关毫秒转时间的方法,及时间间隔等

热门文章

  1. 超全!一文看懂 9 种Transformer结构!
  2. by group 累加中文字段_EF 求和 GroupBy多个字段
  3. 全球首颗光线追踪绘图处理器
  4. MySQL关联eclipse_MySQL JDBC 连接数据库基本操作
  5. 清华源离线安装pytorch_【Pytorch】pytorch安装的时候下载不动
  6. 2016年系统集成项目管理工程师最新考试说明
  7. hadoop应用开发技术..._Hadoop
  8. jdk8新特性(接口新特性、lambda表达式、方法引用、函数式接口、Stream流)和单例设计模式
  9. 操作类名-对象语法//操作类名-数组语法
  10. java中的几个集合类