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中,有两种残差结构,一种是如下的结构。

50、实战 - 利用 conv + bn + relu + add 写一个残差结构_第1张图片

图中红框标注的是其中一种残差结构,这个结构的特点是左侧分支有3个卷积,每个卷积后面有一个 relu 激活函数。

你可能会问,左侧最后的一个卷积后面没有 relu 啊,这是因为左侧最后的一个卷积会和右侧的一个卷积相加,加完之后的结果再做 relu,实际上也相当于卷积后面都会有个relu。只要在卷积后面有一个 relu 激活函数,

你可能感兴趣的:(CV视觉算法入门与调优,cnn,人工智能,神经网络)