当实现深度神经网络的时候,常用的检验代码是否有错的方法是拿出一张纸,然后过一遍算法中矩阵的维数,下面会向大家展示具体怎么做。

在上图的神经网络中,神经网络的层数为5层,总共有4个隐层和一个输出层,如果你想实现正向传播,第一步是z[1]=w[1]x+b[1]z^{[1]}=w^{[1]}x+b^{[1]}z[1]=w[1]x+b[1],现在先忽略偏置项,只关注参数w。图中的第一隐藏层有三个隐藏单元,第一层隐藏层单元数是n[1]n^{[1]}n[1],所以n[1]=3n^{[1]}=3n[1]=3,接下来n[2]=5n^{[2]}=5n[2]=5,n[3]=4n^{[3]}=4n[3]=4,n[4]=2n^{[4]}=2n[4]=2,n[5]=1n^{[5]}=1n[5]=1。到目前为止我们只看到过只有一个输出单元的神经网络,在之后会学习有多个输出单元的神经网络,最后回到输入层,n[0]=2n^{[0]}=2n[0]=2,然后我们看一下z,w和x的维数。z是第一个隐层的激活函数向量,z的维度为(3,1)(3,1)(3,1),也就是一个三维的向量,也可以写成(n[1],1)(n^{[1]},1)(n[1],1)维向量;接着看输入特征x,x在这里有两个输入特征,所以x的维度为(2,1)(2,1)(2,1),归纳起来x的维度就是(n[0],1)(n^{[0]},1)(n[0],1),所以我们需要W[1]W^{[1]}W[1]这个矩阵就能够实现这样的结果,也就是当我们用W[1]W^{[1]}W[1]乘于一个(n[0],1)(n^{[0]},1)(n[0],1)维向量时,我们会得到一个(n[1],1)(n^{[1]},1)(n[1],1)维向量。根据矩阵的乘法规则,可以知道W[1]W^{[1]}W[1]的维度为(3,2)(3,2)(3,2),也就是(n[1],n[0])(n^{[1]},n^{[0]})(n[1],n[0])维矩阵。

总结起来,W[l]W{[l]}W[l]的维度必须是(n[l],n[l−1])(n^{[l]},n^{[l-1]})(n[l],n[l−1])。现在再来看向量b的维度,在第一层中,b是一个(3,1)(3,1)(3,1)向量,如果做向量加法,必须加上一个(3,1)(3,1)(3,1)维度的矩阵,总结一下,b[l]b^{[l]}b[l]的维度为(n[l],1)(n^{[l]},1)(n[l],1)。

在实现反向传播的时候,dwdwdw的维度应该和WWW的维度相同,dbdbdb的维度应该和bbb的维度相同。我们还需要检查z,x和a[l]a^{[l]}a[l]的维度,因为z[l]z^{[l]}z[l]对应元素g[l](a[l])g^{[l]}(a^{[l]})g[l](a[l]),这里z和a的维度应该相同。

依照惯例,我们看看向量化的实现过程,这样就可以同时作用于多个样本。即使实现过程已经向量化了,w和dw,b和db的维度应该始终是一样的,但是Z,A以及X的维度会在向量化后发生变化。

在之前的情况中,z[1]=W[1]x+b[1]z^{[1]}=W^{[1]}x+b^{[1]}z[1]=W[1]x+b[1],这种情况下z[1],W[1],x,b[1]z^{[1]},W^{[1]},x,b^{[1]}z[1],W[1],x,b[1]的维度分别是(n[1],1),(n[1],n[0]),(n[0],1),(n[1],1)(n^{[1]},1),(n^{[1]},n^{[0]}),(n^{[0]},1),(n^{[1]},1)(n[1],1),(n[1],n[0]),(n[0],1),(n[1],1)。

当一切向量化之后,Z[1]=W[1]X+b[1]Z^{[1]}=W^{[1]}X+b^{[1]}Z[1]=W[1]X+b[1],Z[1]Z^{[1]}Z[1]是从每一个单独的z[1]z^{[1]}z[1]的值叠加得到的,所以Z[1]Z^{[1]}Z[1]的维度不再是(n[1],1)(n^{[1]},1)(n[1],1),维度变为(n[1],m)(n^{[1]},m)(n[1],m),其中m是训练集大小,W[1]W^{[1]}W[1]的维度还是一样的,维度大小为(n[1],n[0])(n^{[1]},n^{[0]})(n[1],n[0]),XXX维度不再是(n[0],1)(n^{[0]},1)(n[0],1),而是把所有训练样本水平叠在一块,现在的维度为(n[0],m)(n^{[0]},m)(n[0],m)。当你把一个(n[1],n[0])(n^{[1]},n^{[0]})(n[1],n[0])矩阵乘于一个(n[0],m)(n^{[0]},m)(n[0],m)矩阵会得到一个(n[1],m)(n^{[1]},m)(n[1],m)矩阵,b[1]b^{[1]}b[1]的维度还是(n[1],1)(n^{[1]},1)(n[1],1),当b加上(n[1],m)(n^{[1]},m)(n[1],m)矩阵矩阵时,使用python的广播机制,b会(n[1],m)(n^{[1]},m)(n[1],m)矩阵,然后逐个元素相加。

向量化之后,z[l]z^{[l]}z[l]的维度和a[l]a^{[l]}a[l]的维度从(n[l],1)(n^{[l]},1)(n[l],1)变为(n[l],m)(n^{[l]},m)(n[l],m)。还有个特别情况是当l等于0时,对应的A[0]A^{[0]}A[0]也就等于输入的特征向量x,A^{[0]}的维度应该是(n[0],m)(n^{[0]},m)(n[0],m)。

如果你在实现反向传播的话,我们会发现在计算了DZ[l]DZ{[l]}DZ[l]和DA[l]DA^{[l]}DA[l]之后,会发现它们的维度跟ZZZ和AAA是一样的,其维度为(n[l],m)(n^{[l]},m)(n[l],m)。

吴恩达深度学习 —— 4.3 核对矩阵的维数相关推荐

  1. 深度学习入门首推资料--吴恩达深度学习全程笔记分享

    本文首发于微信公众号"StrongerTang",可打开微信搜一搜,或扫描文末二维码,关注查看更多文章. 原文链接:(https://mp.weixin.qq.com/s?__bi ...

  2. 吴恩达深度学习教程——中文笔记网上资料整理

    吴恩达深度学习笔记整理 内容为网上博主博文整理,如有侵权,请私信联系. 课程内容: Coursera:官方课程安排(英文字幕).付费用户在课程作业中可以获得作业评分,每门课程修完可获得结课证书:不付费 ...

  3. Andrew Ng吴恩达深度学习Course_1笔记

    基于吴恩达深度学习课程所记的相关笔记 目录 术语概念 第一周 深度学习概念 第二周 神经网络基础 Notation logistic回归函数 Loss function损失函数和Cost functi ...

  4. [转载]《吴恩达深度学习核心笔记》发布,黄海广博士整理!

    红色石头 深度学习专栏 深度学习入门首推课程就是吴恩达的深度学习专项课程系列的 5 门课.该专项课程最大的特色就是内容全面.通俗易懂并配备了丰富的实战项目.今天,给大家推荐一份关于该专项课程的核心笔记 ...

  5. 737 页《吴恩达深度学习核心笔记》发布,黄海广博士整理!

    点击上方"AI有道",选择"置顶"公众号 重磅干货,第一时间送达 深度学习入门首推课程就是吴恩达的深度学习专项课程系列的 5 门课.该专项课程最大的特色就是内容 ...

  6. 吴恩达深度学习笔记1-Course1-Week1【深度学习概论】

    2018.5.7 吴恩达深度学习视频教程网址 网易云课堂:https://mooc.study.163.com/smartSpec/detail/1001319001.htm Coursera:htt ...

  7. 799页!吴恩达深度学习笔记.PDF

    吴恩达深度学习课程,是公认的最优秀的深度学习课程之一,目前没有教材,只有视频,本文提供完整笔记下载,这本笔记非常适合和深度学习入门. 0.导语 黄海广博士和同学将吴恩达老师深度学习视频课程做了完整的笔 ...

  8. 吴恩达深度学习课程的漫画版来了!(漫画、视频、笔记都可以下载了!)

    吴恩达深度学习课程,个人认为是对初学者最友好的课程,非常系统.初学者如果希望快速入门,建议从这门课开始.由于是视频课,除了课程笔记之外,可以先看看课程漫画,更有助于理解. 尽管是英文版,但英文水平达到 ...

  9. 360题带你走进深度学习!吴恩达深度学习课程测试题中英对照版发布

    吴恩达的深度学习课程(deepLearning.ai)是公认的入门深度学习的宝典,本站将课程的课后测试题进行了翻译,建议初学者学习.所有题目都翻译完毕,适合英文不好的同学学习. 主要翻译者:黄海广 内 ...

最新文章

  1. TensorFlow MNIST初级学习
  2. 语言学概论ppt课件_精益生产管理培训PPT课件-精益生产管理概论
  3. 是可改写的随机存储器_关于存储器的一些基础知识整理
  4. 工厂方法模式及php实现
  5. @Autowired注解作用在方法上
  6. 某储云商城系统源码V1.782 绿色版
  7. CCNA学习指南十三章
  8. 华为最新 5G 折叠机 MateXs 发布,起售价 19000 多元
  9. TDSQL 在微众银行的大规模实践之路
  10. 行为型设计模式(5)—— 策略模式(Strategy Pattern)
  11. Sublime Text 3 如何配置Python环境及安装插件?
  12. 涿州有没有java_谁说涿州没有方言?
  13. 7月6号奥特曼服务器维护中,泰迦奥特曼:7月6号开播,泰迦是泰罗儿子,优幸可变为三个奥特曼...
  14. varbinary mysql_MySQL中的数据类型binary和varbinary详解
  15. LVGL开发 | lv_lib_100ask之lvgl数字对拼图小游戏(lv_100ask_memory_game)-接口简单、使用便捷
  16. 伟大的micropython smartconfig 配网它来了!!!
  17. 3dmax和python做3d动画_3D动画和影视建模,用什么软件或者多个什么软件结合做比较好?...
  18. 使用Excel校验VIN码(车架号)第九位
  19. m基于QPSK调制解调的无线图像传输matlab仿真,包括扩频解扩均衡等模块
  20. js 排班插件_最近做的排班表,整个表格全JS动态生成,用了很多Jquery的库,4个主要页面...

热门文章

  1. JDK Executor执行器的应用
  2. 容器编排技术 -- Kubernetes 为 Namespace 配置CPU和内存配额
  3. Linux中Tomcat 服务的搭建
  4. 五、C#入门—流程控制
  5. 2019国内某知名科技公司技术资料
  6. 【前端自动化构建】之 自动化部署
  7. node js 技术架构_[视频] Node JS中的干净架构
  8. dropbox_在5分钟内学习Dropbox API
  9. 二进制数据结构:JavaScript中的树和堆简介
  10. Java中的equals和==的差别 以及Java中等价性和同一性的讨论