图像分类篇-5:ResNet+ResNeXt

目录

前言

ResNet网络结构,BN以及迁移学习详

ResNet详解

 resnet中提出的残差结构

原论文给出的参数列表 

BN

 使用迁移学习的优势

迁移学习介绍

 常见的迁移学习方式

ResNeXt网络结构

使用pytorch搭建ResNet并基于迁移学习训练

model.py

train.py

下载预训练模型

train.py代码

训练

predict.py

代码

预测结果


前言

这个是按照B站up主的教程学习这方面知识的时候自己做的的笔记和总结,可能有点乱,主要是按照我自己的记录习惯

参考内容来自:


ResNet网络结构,BN以及迁移学习详

ResNet详解


为什么这里强调了超深的网络,因为会产生梯度消失或者梯度爆炸;退化问题。

一般梯度消失或爆炸的解决方法:对数据进行标准化处理,或者权重标准化以及BN

一般退化问题(层数深的网络没有层数少的效果好):本文resnet中提出的残差结构

上图的右图是在原论文中搭建的一系列网路。

 resnet中提出的残差结构

实现和虚线的残差结构有不同,实现的输入输出的形状不变 


原论文给出的参数列表 

BN

 使用迁移学习的优势

1.能够快速的训练出一个理想的结果

2.当数据集较小的时候也能训练出理想的效果

注:使用别人预训练模型参数时,要注意别人的预处理方式

迁移学习介绍

将学习到的网络的浅层的网络迁移到新的网络中,这样新的网络也拥有了学习底层通用特征的能力了 ,这样新的网络就可以更加快速的去学习新的特征

 常见的迁移学习方式

1.载入权重后训练所有参数

2.载入权重后只训练最后几层参数

3.载入权重后在原网络基础上再添加一层全连接层,仅仅训练最后一个全连接层


ResNeXt网络结构

作者仍然有何凯明大神


 


 

使用pytorch搭建ResNet并基于迁移学习训练

model.py

import torch.nn as nn
import torch


class BasicBlock(nn.Module):
    expansion = 1 # 对应残差结构中主分支采用的卷积核的个数是否发生变化

    def __init__(self, in_channel, out_channel, stride=1, downsample=None, **kwargs):  # downsample=None 下采样:对应虚线的残差结构
        super(BasicBlock, self).__init__()
        self.conv1 = nn.Conv2d(in_channels=in_channel, out_channels=out_channel,
                               kernel_size=3, stride=stride, padding=1, bias=False)  # stride=1对应实线的残差结构
        # 使用batch normalization时不需要使用偏置, bias = False
        self.bn1 = nn.BatchNorm2d(out_channel)  # out_channel对应输入特征矩阵的深度
        self.relu = nn.ReLU()
        self.conv2 = nn.Conv2d(in_channels=out_channel, out_channels=out_channel,
                               kernel_size=3, stride=1, padding=1, bias=False)
        self.bn2 = nn.BatchNorm2d(out_channel)
        self.downsample = downsample

    def forward(self, x):
        identity = x
        if self.downsample is not None:  # 没有输入下采样
            identity = self.downsample(x)

        out = self.conv1(x)
  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值