resnet
思路
![image-20200905153024536](https://i-blog.csdnimg.cn/blog_migrate/5078ec51a3dd569ad7cd9c9b7926e283.png)
神经网络在反向传播过程中要不断地传播梯度,而当网络层数加深时,梯度在传播过程中会逐渐消失(假如采用Sigmoid函数,对于幅度为1的信号,每向后传递一层,梯度就衰减为原来的0.25,层数越多,衰减越厉害),导致无法对前面网络层的权重进行有效的调整。
随着网络的加深,累计的参数变多,越容易导致梯度下降或者梯度爆炸,于是现象就是更深的网络有着更强大的表达,但是随着网络的增加,最终的效果却不好,于是resnet的思路就是在进行网络加深的时候进行一个类似短路的操作,保证最终的效果
通过这样的结构,中间网络的参数减小,导致更深层的网络的实现成为可能。
例子:
class ResBlk(nn.Module):
"""
resnet block
"""
def __init__(self, ch_in, ch_out):# ch_in, ch_out不一定一致,假设ch_in为64,ch_out为256