1.为什么self.dense0(x)这个没有报错,已经在初始化之后指定了参数,而且nn.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的组成:
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的求导函数的通项公式是:通过递推公式进行归纳!