在构建深度学习神经网络结构的时候,由于网络的拓扑结构比较复杂,包括比较多的层次(hidden layer),以及每一层又有许多activation(neuron)单元组成,因此在计算forward以及backward propagation时,为了减少不必要的错误,最好对其中的每一层的input/output matrix的dimension有个底,也对每一层的input/output结构有更好的理解。


为了更好地表述,一般需要统一一下用到的一些符号,以及其代表的意义。下面以一个5层的神经网络结构为例子:

Denotation

  • L :整个网络的层次,上图就是一个5层的神经网络,它包含4个hidden layers, 一个output layer,通常input 层不计算在L里面,当然也可以认为它是第0层。
  • ℓ\ell :(小写L),表示当前是第几层。
  • m:有多少个training/test example
  • nxn_x :每一个training/test example有多少个feature, 上图nxn_x=2 (x1,x2x_1, x_2)
  • n[ℓ]n^{[\ell]}:第ℓ\ell层有多少个activation unit, 比如上图中n[1]n^{[1]}=3, n[2]n^{[2]}=5, …, n[5]n^{[5]}=1, 其中n[0]n^{[0]}=nxn_x=2
  • W[ℓ]W^{[\ell]}: 第ℓ\ell层的parameters, 用来计算第ℓ\ell层的activation unit (Z=WX+b)
  • b[ℓ]b^{[\ell]}:第ℓ\ell层的校正量(bias), 同上用于计算Z函数
  • Z[ℓ]Z^{[\ell]}:Forward propagation的线性输出,Z[ℓ]Z^{[\ell]} = W[ℓ]W^{[\ell]}A[ℓ−1]A^{[\ell-1]}+b[ℓ]b^{[\ell]}, 其中第一层Z[1]Z^{[1]} = W[1]W^{[1]}X+b[1]b^{[1]}
  • A[ℓ]A^{[\ell]}:第ℓ\ell层的activation,是对Z[ℓ]Z^{[\ell]} apply activation function产生的输出,比如:sigmoid/tanh/ReLU。通常这样写:A[ℓ]A^{[\ell]}=g[ℓ]g^{[\ell]}(Z), g表示上同提到的activation function.
  • dvar:最终输出对变量var的偏导数,假如f(v)=3vf(v)=3v,则dv=∂f(v)∂v=3dv={\partial f(v) \over \partial v}=3; v=3x+2, 则函数f对变量x的偏导数dx=∂f(v)∂x=∂f(v)∂v⋅∂v∂x=9dx={\partial f(v) \over \partial x}={\partial f(v) \over \partial v} \cdot {\partial v \over \partial x}=9。

Dimension

假如有m个training example,则输入变量X的dimention=[nxn_x,m],其中每一列表示一个training example, 总共有m列,表示m个training example,如下图所示:

X(nx,m)=⎡⎣⎢|x1||x2|⋯⋯⋯|xi|⋯⋯⋯|xm|⎤⎦⎥

X_(n_x, m) = \begin{bmatrix}| & | & \cdots & | & \cdots & |\\x^1 & x^2 & \cdots & x^i & \cdots & x^m \\| & | & \cdots & | & \cdots & |\\\end{bmatrix}
其中 xix^i是column vector, 表示第i个example:

xi=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢xi1xi2⋮xii⋮xinx⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

x^i = \begin{bmatrix}x_1^i \\x_2^i \\\vdots \\x_i^i \\\vdots \\x_{n_x}^i\end{bmatrix}
W由于是连接任意邻近两层的参数,所以 W[ℓ]W^{[\ell]} = [ n[ℓ],n[ℓ−1]n^{[\ell]}, n^{[\ell-1]}],上图中:
W[1]W^{[1]} = [3, 2], W[2]W^{[2]}=[5,3], W[3]W^{[3]}=[4,5], W[4]W^{[4]}=[2,4], W[5]W^{[5]}=[1,2]


Z[ℓ]=W[ℓ]A[ℓ−1]+b[ℓ],A[ℓ]=g(Z[ℓ])Z^{[\ell]}=W^{[\ell]}A^{[\ell -1]}+b^{[\ell]}, A^{[\ell]}=g(Z^{[\ell]}),因此Z[ℓ]Z^{[\ell]}的dimension跟A^{[\ell]}的dimension是一样的:
{
Z[1]=W[1]A[0]+b[1]=W[1]X+b[1]Z^{[1]}=W^{[1]}A^{[0]}+b^{[1]}=W^{[1]}X+b^{[1]}, [3, 2]的matrix 乘以[2, m]得到[3, m]的matrix
Z[2]=W[2]A[1]+b[2]Z^{[2]}=W^{[2]}A^{[1]}+b^{[2]},得到[5, m]的matrix
Z[3]=W[3]A[2]+b[3]Z^{[3]}=W^{[3]}A^{[2]}+b^{[3]},得到[4, m]的matrix
…\dots
Z[5]=W[5]A[4]+b[5]Z^{[5]}=W^{[5]}A^{[4]}+b^{[5]},得到[1, m]的matrix
}

因此Z[ℓ]Z^{[\ell]}以及A[ℓ]A^{[\ell]} 的dimension=[n[l],m][n^{[l]}, m],它们的dimension是跟training example的数量有关的。


下表是各个变量的dimension:

Matrix Dimension
W[ℓ]W^{[\ell]} [n[ℓ],n[ℓ−1]][n^{[\ell]}, n^{[\ell-1]}]
b[ℓ]b^{[\ell]} [n[ℓ],1][n^{[\ell]}, 1]
dw[ℓ]dw^{[\ell]} [n[ℓ],n[ℓ−1]][n^{[\ell]}, n^{[\ell-1]}]
db[ℓ]db^{[\ell]} [n[ℓ],1][n^{[\ell]}, 1]
Z[ℓ]Z^{[\ell]} [n[l],m][n^{[l]}, m]
A[ℓ]A^{[\ell]} [n[l],m][n^{[l]}, m]

深度学习的Dimension检查相关推荐

  1. 忽悠神经网络指南:教你如何把深度学习模型骗得七荤八素

    知己知彼,无论你是想成为黑客(最好不要!)或防范未来黑客的入侵,都有必要来了解一下如何骗过由海量数据训练出来的深度学习模型. 只要有程序员还在编程,黑客们就会不遗余力地找寻利用这些程序的方法.恶意黑客 ...

  2. 英特尔为 Kubernetes 推出分布式深度学习平台:Nauta

    2019独角兽企业重金招聘Python工程师标准>>> 随着人工智能的发展,深度学习的价值不断增长,但实现它可能是一个复杂耗时的过程.英特尔(Intel)正寻求通过其在 Kubern ...

  3. 英特尔贡献基于 Kubernetes 分布式深度学习平台:Nauta

    随着人工智能的发展,深度学习的价值不断增长,但实现它可能是一个复杂耗时的过程.英特尔(Intel)正寻求通过其在 Kubernetes 进行分布式深度学习的新开源平台来改变这一状况,该深度学习平台称为 ...

  4. 使用U-Nets和深度学习进行自动缺陷检查

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 生产过程中的缺陷检测是保证产品质量的必要步骤. ...

  5. 如何在Keras中检查深度学习模型(翻译)

    本文翻译自:How to Check-Point Deep Learning Models in Keras 深度学习模型可能需要数小时,数天甚至数周才能进行训练. 如果意外停止运行,则可能会丢失大量 ...

  6. 强生进军医疗机器人、Deepmind利用深度学习算法检查乳腺癌X光,AI医疗的风口已到来?...

    合作是AI在医疗领域快速赋能的一大解决方式. 一直以来,强迫症.忧郁症等情绪类精神疾病都被业界认为是没有办法从生理上进行治愈的疾病,最近,在<自然>杂志上公布的最新AI+医疗的神经算法就可 ...

  7. 深度学习笔记-遥感影像转为tensor前的检查及线性拉伸

    @TOC 前言-为什么要做线性拉伸 近期在开展语义分割任务,用到的数据是经过SNAP预处理的Sentinel-1的SAR数据.工作需要将相关的Image和label送入模型,进行目标地物的分割. 这里 ...

  8. 深度学习不work?这有一份超全的Debug检查清单

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 前言:本笔记是对近日阅读keynote"Troubleshooting De ...

  9. Deep Learning 9_深度学习UFLDL教程:linear decoder_exercise(斯坦福大学深度学习教程)...

    前言 实验内容:Exercise:Learning color features with Sparse Autoencoders.即:利用线性解码器,从100000张8*8的RGB图像块中提取颜色特 ...

最新文章

  1. 千万级游标_在一个千万级的数据库查寻中,如何提高查询效率
  2. Eclipse如何导入maven项目,以及配置maven
  3. linux sort -w32,WIN32汇编: 31.列表视图控件
  4. VTK:图表之DirectedGraphToMutableDirectedGraph
  5. 使用工厂模式与泛型对三层架构的每一层进行解耦
  6. 《Python数据科学实践指南》——0.2节如何成为数据科学家
  7. [NOI2009] 变换序列 (匈牙利最大匹配)
  8. Hibernate Query数据查询
  9. mtk android手机 代码问题,MTK用户必备 Android手机也能系统恢复
  10. 图像增强_MATLAB图像处理之图像增强一
  11. AIML框架标签详解
  12. linux 卸载 flash,Linux系统下Flash Player崩溃的一个解决办法分享
  13. 请结合实例说明欧洲中世纪哥特式建筑的风格特点
  14. ANDROID集成支付宝SDK_APP应用支付宝开发DEMO
  15. 户外风景拍摄自然风光摄影网站搭建模板
  16. 【PHP MySQL】数据库专题 第八课 表连接
  17. 2019Java 全栈工程师 进阶路线图!一定要收藏!
  18. Spring IOC和DI 的学习资料(附带大师英文文章)
  19. js excel 在线插件 合并单元格 设置单元格样式 编辑工具
  20. 2021工业交换机前十大品牌排行榜,工业交换机哪个牌子好?

热门文章

  1. html5+mrow标签,HTML5 MathML
  2. 磁化强度以及磁化率推导1-郎之万顺磁性
  3. 阿里云ECS服务器地域选深圳杭州还是上海?
  4. 揭秘可解释推荐系统:知其然,知其所以然
  5. NOI2022 游记
  6. HTML简单的图片瀑布流
  7. Windows快捷键☞【Win+R】常用命令
  8. MySQL安全性:防止攻击和保护数据
  9. R语言 | 认识apply家族
  10. SAP将裁员4400人,颤抖吧!