适合新手搭建ResNet50残差网络的架构图(最全)

这篇具有很好参考价值的文章主要介绍了适合新手搭建ResNet50残差网络的架构图(最全)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

适合新手搭建ResNet50残差网络的架构图+代码(最全)

网上的教程大多复杂难懂,不适合新手,本来神经网络就难,这些教程本身更难,对新手极度不友好,因此自己做的这个架构图和写的代码,面向新手,大神跳过

resnet50结构图,网络,深度学习,python,人工智能,机器学习

from torch import nn
import torch
from torchviz import make_dot

class box(nn.Module):
    def __init__(self, in_channels, index=999, stride=1, downsample=False):
        super(box, self).__init__()

        last_stride = 2  # 虚残差中卷积核的步距

        if downsample:  # 虚残差结构
            f_out_channnels = in_channels * 2
            out_channels = int(in_channels / 2)
            if index == 0:  # here is first core
                in_channels = int(in_channels / 2)  # 第一层设置为128,是方便了后面的统一处理
                out_channels = in_channels
                f_out_channnels = in_channels * 4
                last_stride = 1

                stride = 1

        else:  # 实残差
            f_out_channnels = in_channels * 1
            out_channels = int(in_channels / 4)



        self.downsample = downsample
        self.conv1 = nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=1, stride=1, padding=0, bias=False)
        self.relu = nn.ReLU(inplace=True)
        self.bn1 = nn.BatchNorm2d(out_channels)

        self.conv2 = nn.Conv2d(in_channels=out_channels, out_channels=out_channels, kernel_size=3, stride=stride, padding=1, bias=False)
        self.relu = nn.ReLU(inplace=True)
        self.bn2 = nn.BatchNorm2d(out_channels)

        self.conv3 = nn.Conv2d(in_channels=out_channels, out_channels=f_out_channnels, kernel_size=1, stride=1, padding=0)
        self.bn3 = nn.BatchNorm2d(f_out_channnels)

        self.fe = nn.Sequential(
            nn.Conv2d(in_channels=in_channels, out_channels=f_out_channnels, kernel_size=1, stride=last_stride,  padding=0, bias=False),
            nn.BatchNorm2d(f_out_channnels),
        )



    def forward(self, x):
        identity = x
        if self.downsample:
            identity = self.fe(x)
        x = self.conv1(x)
        x = self.bn1(x)
        x = self.relu(x)

        x = self.conv2(x)
        x = self.bn2(x)
        x = self.relu(x)

        x = self.conv3(x)
        x = self.bn3(x)

        out = x + identity
        out = self.relu(out)
        return out


class New50(nn.Module):
    def __init__(self,in_out, num_classes=4):
        super(New50, self).__init__()


        self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2,padding=3, bias=False)
        self.bn1 = nn.BatchNorm2d(64)
        self.relu = nn.ReLU(inplace=True)

        self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)

        self.avgpool = nn.AdaptiveAvgPool2d((1, 1))  # output size = (1, 1)
        self.fc = nn.Linear(512 * 4 , num_classes)

        layers = []
        for index, z in enumerate(in_out):
            in_ch = z[0]                                      # 这里通道/2
            layers.append(box(in_channels=in_ch, stride=2, downsample=z[2], index=index))  # 这里处理第一层

            for i in range(1, z[1]):
                layers.append(box(in_channels=z[3]))  # 这里处理其他两层
        # print(layers)
        self.fes = nn.Sequential(*layers)

    def forward(self, x):
        x = self.conv1(x)
        x = self.bn1(x)
        x = self.relu(x)
        x = self.maxpool(x)
        x = self.fes(x)
        x = self.avgpool(x)
        x = torch.flatten(x, 1)
        x = self.fc(x)
        return x




in_out = [(128, 3, True, 256), (256, 4, True, 512), (512, 6, True, 1024), (1024, 3, True, 2048)]

s = New50(in_out=in_out)
def resnet500():
    return New50(in_out=in_out)

'''每层的第一层输入
   每层重复的次数
   是否走虚残差
   每层的第二个卷积核的输入'''

后续还会上传ResNet30,FCN,UNet等架构图和代码。文章来源地址https://www.toymoban.com/news/detail-622987.html

到了这里,关于适合新手搭建ResNet50残差网络的架构图(最全)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 残差网络ResNet

    残差网络的提出,是为了解决深度学习中的退化问题。 退化问题指的是随着神经网络层数的增加,网络性能反而逐渐降低的现象。换句话说,当我们不断增加神经网络的层数时,神经网络的训练误差可能会持续下降,但是验证集误差却不断增加,最终网络性能达到瓶颈。 退化

    2024年02月06日
    浏览(43)
  • 残差网络 ResNet

    目录 1.1 ResNet 2.代码实现 如上图函数的大小代表函数的复杂程度,星星代表最优解,可见加了更多层之后的预测比小模型的预测离真实最优解更远了, ResNet做的事情就是使得模型加深一定会使效果变好而不是变差。 参考: inplace=True (原地操作)-CSDN博客 Python中initialize的全面讲

    2024年01月22日
    浏览(35)
  • 残差网络(ResNet) -深度学习(Residual Networks (ResNet) – Deep Learning)

    在第一个基于cnn的架构(AlexNet)赢得ImageNet 2012比赛之后,每个随后的获胜架构都在深度神经网络中使用更多的层来降低错误率。这适用于较少的层数,但当我们增加层数时,深度学习中会出现一个常见的问题,称为消失/爆炸梯度。这会导致梯度变为0或太大。因此,当我们增加

    2024年02月15日
    浏览(41)
  • 深度学习图像分类实战——pytorch搭建卷积神经网络(AlexNet, LeNet, ResNet50)进行场景图像分类(详细)

    目录 1  一、实验过程 1.1  实验目的 1.2  实验简介 1.3  数据集的介绍 1.4  一、LeNet5网络模型 1.5  二、AlexNet网络模型 1.6  三、ResNet50(残差网络)网络模型  二、实验代码 导入实验所需要的库  参数配置 数据预处理 重新DataSet 加载数据转为DataLoader函数 可视化一批训练

    2024年02月05日
    浏览(63)
  • 机器学习之ResNet(残差网络)与常用的标准数据集

    ResNet(Residual Network)是一种深度神经网络,由微软实验室的何凯明等几位大神在2015年提出,并在当年的ImageNet竞赛中获得了分类任务第一名。 ResNet通过引入残差结构(residual structure),解决了深度神经网络在训练过程中出现的梯度消失或梯度爆炸问题,从而使得网络可以构

    2024年02月11日
    浏览(35)
  • 【神经网络】(10) Resnet18、34 残差网络复现,附python完整代码

    各位同学好,今天和大家分享一下 TensorFlow 深度学习 中如何搭载 Resnet18 和 Resnet34 残差神经网络,残差网络 利用 shotcut 的方法成功解决了网络退化的问题 ,在训练集和校验集上,都证明了的更深的网络错误率越小。 论文中给出的具体的网络结构如下: Resnet50 网络结构 我已

    2023年04月08日
    浏览(39)
  • 经典神经网络论文超详细解读(五)——ResNet(残差网络)学习笔记(翻译+精读+代码复现)

    《Deep Residual Learning for Image Recognition》这篇论文是何恺明等大佬写的,在深度学习领域相当经典,在2016CVPR获得best paper。今天就让我们一起来学习一下吧! 论文原文:https://arxiv.org/abs/1512.03385 前情回顾: 经典神经网络论文超详细解读(一)——AlexNet学习笔记(翻译+精读)

    2024年02月08日
    浏览(44)
  • 大数据深度学习ResNet深度残差网络详解:网络结构解读与PyTorch实现教程

    本文深入探讨了深度残差网络(ResNet)的核心概念和架构组成。我们从深度学习和梯度消失问题入手,逐一解析了残差块、初始卷积层、残差块组、全局平均池化和全连接层的作用和优点。文章还包含使用PyTorch构建和训练ResNet模型的实战部分,带有详细的代码和解释。 深度

    2024年01月18日
    浏览(46)
  • 【基于深度学习的人脸识别】(Dlib+ResNet残差神经网络)——QT(C++)+Linux

    dlib_face_recognition_resnet_model_v1.dat 是基于深度学习的人脸识别模型,是dlib库中的一个重要组件。该模型的原理涉及到深度卷积神经网络(DCNN)和具体的人脸识别算法。 dlib 人脸识别采用了 Resnet 残差神经网络,识别精度高于普通神经网络,同样我们可以到官网去下载训练好的模

    2024年04月23日
    浏览(46)
  • 从新手到Flutter架构师,一篇就够!Flutter-最全开源项目(UI、导航、网络、导航、音视频---)

    pub.dartlang.org/packages/fl… 最好用的路由导航框架。功能:简单的路线导航;函数处理程序(映射到函数而不是路径);通配符参数匹配;查询字符串参数解析;内置常用转换;简单的定制转换创建。 http pub.dartlang.org/packages/ht… github.com/dart-lang/h… http是使用Dart原生编写的网络

    2024年04月17日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包