mxnet之算法理解

2018-05-23  本文已影响0人  黎明的烬

1.为什么self.dense0(x)这个没有报错,已经在初始化之后指定了参数,而且nn.Dense反返回的是张量。

Dense里面的参数到底是什么?

不懂这种用法:不过可以理解为256是定义网络的节点个数,下面的x表示网络的输入

mili的回答:dense0是一个class的实例。dense0(x)属于operator 重载,它实际上是调用dense0.forward(x)

2.卷积神经网络的通道

卷积操作的过程这个通道是如何变化的:【以mxnet中四维的矩阵为例】

需要理解卷积操作,卷积核大小,作用(降维),在mxnet中的nn.conv2D函数中第一个参数channels是卷积的输出通道数,或者是nn.Convlution函数中的num-filter表示输出通道数;而通道有这样的性质:多个通道的时候,每个通道会  n有对应的权重;此处的权重形状与卷积核的形状相同【第一个参数是输出通道数,第二个参数是输入通道数,第三四个参数就是卷积核的宽、高】,按元素进行运算之后加和得到新的矩阵。且下一层卷积的输入通道数需要等于上一层卷积输出的通道数!

3.在numpy和mxnet的ndaray中的数组都会出现轴的概念,axis

牢记一点:只要按照axis=1的运算或者操作,那么axis=1的结果1轴的维度必然改变。从两个2×3变成4×3的矩阵

3.GooLeNet的组成:

goolenet的图 Inception的组成

1*1表示提取最细的信息,3*3提取稍大块的信息,5*5提取更大的信息;maxpool以里外一种方式来取信息;

绿色的卷积是为了转换输入,改变通道数;使得最后可以按照通道数concat在一起

4.反向传播和正向传播【相辅相成,反向传播有时候需要正向传播的值  】

正向传播的计算图

前向传播:假设输入X形状是x×1,h形状是h×1,o的形状是y×1,那么可以知道w(1)的形状是h×x;

其中h的函数是对结果z,按照元素来进行操作!

s是正则化项:w的各个元素平方和,j是损失和正则化的加和,也就是总误差!

反向传播:从最后开始,就是先s和L,再o。。。。。

左边是反向传播,对各求导的式子

①让J 对 s 和 L求导,如图

②对o求导;利用①

③对w(2)求导,其中h的转置是因为其它参数的形状固定了,所以需要将h转置

④对z求导,利用到了元素乘法,即对两个矩阵对应的元素相乘得到的。

在循环神经网络上运用反向传播:

循环神经网络的反向传播

其中L对Ht的求导函数的通项公式是:通过递推公式进行归纳!

上一篇下一篇

猜你喜欢

热点阅读