利用Pytorch实现ResNet34网络
利用Pytorch实现ResNet网络
主要是为了学习Pytorch构建神经网络的基本方法,参考自«深度学习框架Pytorch:入门与实践»一书,作者陈云
1.什么是ResNet网络
ResNet(Deep Residual Network)深度残差网络,是由Kaiming He等人提出的一种新的卷积神经网络结构,其最重要的特点就是网络大部分是由如图一所示的残差单元组成,许多参数相同的残差单元连接起来组成BasicBlock,而许多BasicBlock组合起来再加上预处理层和最后的全连接分类层就组成了ResNet网络
1.1 ResNet34网络的具体构造
具体构造如下图所示:
除了最开始的卷积池化和最后的池化全连接外,网络中有许多结构相似的单元,这些重复单元的共同点就是有个跨层直连的shortcut。
不同层数的ResNet的配置清单:
1.2 ResNet34网络的原理与优点
目前不太理解,待补充。。。。。。
2.Pytorch代码实现
2.1 实现代码
import torch as t
from torch import nn
from torch.nn import functional as F
class ResidualBlock(nn.Module):
def __init__(self,inchanel,outchanel,stride=1,shortcut=None):
super(ResidualBlock,self).__init__()
self.left=nn.Sequential(
nn.Conv2d(inchanel,outchanel,3,stride,1,bias=False),
nn.BatchNorm2d(out