本文主要是介绍50、实战 - 利用 conv + bn + relu + add 写一个残差结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
上一节介绍了残差结构,还不清楚的同学可以返回上一节继续阅读。
到了这里,一个残差结构需要的算法基本都介绍完了,至少在 Resnet 这种神经网络中的残差结构是这样的。
本节我们做一个实战,基于之前几节中手写的 conv / bn 算法,来搭建一个残差结构。其中,relu 的实现和 add 的实现很简单。
relu 算法的实现用 python 来写就一行:
def ComputeReluLayer(img):res = np.maximum(0, img)return res
其中 img 是 relu 的输入数据,取输入数据和零的最大值即可, res 就是经过 relu 激活的结果。
而加法节点的实现就更简单,在 python 中就一个加法操作符就可以完成。
残差结构图
先看一下 resnet 中的残差结构图,在resnet50中,有两种残差结构,一种是如下的结构。
图中红框标注的是其中一种残差结构,这个结构的特点是左侧分支有3个卷积,每个卷积后面有一个 relu 激活函数。
你可能会问,左侧最后的一个卷积后面没有 relu 啊,这是因为左侧最后的一个卷积会和右侧的一个卷积相加,加完之后的结果再做 relu,实际上也相当于卷积后面都会有个relu。只要在卷积后面有一个 relu 激活函数,
这篇关于50、实战 - 利用 conv + bn + relu + add 写一个残差结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!