【matcovnet】反向传播详解

【matcovnet】反向传播详解

本文将在此网络结构的基础上,一步步剖析反向传播的过程。在这里插入图片描述
先简单介绍一下进行前向反向传播的函数vl_simplenn

在matcovnet自带的cnn_train函数中的vl_simplenn函数中,涉及到前向与反向传播的具体计算,具体解析如下:

vl_simplenn 一个针对CNN的具有线性拓扑的轻量级包装器。
在这里插入图片描述
x的第一个数据 表示输入的原始数据在这里插入图片描述
先查看其大小
在这里插入图片描述
在这里插入图片描述

运行到这一步时
在这里插入图片描述
得到每层的信息,包括类型,权重,
在这里插入图片描述
第一层前向传播,经过卷积后,得到
在这里插入图片描述
当l=2时,得到第二层的各种参数在这里插入图片描述
运行完池化的程序后,得到
在这里插入图片描述
前向传播大概就是这个样子,直到进行到最后一层softmaxloss
在这里插入图片描述
得到loss值

下面进行反向传播介绍:
在这里插入图片描述
一开始l=8,对应softmaxloss层,

vi_nnsoftmaxloss既可以做前向传播的函数,也可以当做反向回调的函数。

前向传播时,代码如下:
在这里插入图片描述
反向回调时,代码如下:
在这里插入图片描述
dzdx为误差,这里初始化为1。在这里插入图片描述
根据这两个值反向传播,得到res(8).dzdx 在这里插入图片描述
还是在vl_simplenn中,当遇到卷积层的时候,需要计算dzdw
在这里插入图片描述
输入参数 是这俩还有 其原本的w,b(分别为 l.weights{1}, l.weights{2})在这里插入图片描述
在这里插入图片描述
为了节约内存,在这里插入图片描述
要清空这俩部分
在这里插入图片描述
再次根据这俩个值,得到res(5).dzdx,一直往回调在这里插入图片描述
运行完这一层后,在这里插入图片描述

清空下一层的在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
整个这段程序 运行完毕后,得到
在这里插入图片描述
res结构,根据res结构,可以求出损失值(res(end)),top1err和top5err在这里插入图片描述

可以看到第一次运行结果
在这里插入图片描述
top1err为 1180

所以错误率为1180/1220=0.9672

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值