ResNet18复现

article/2025/11/10 15:19:26

ResNet18的网络架构图

首先将网络分为四层(layers),每层有两个模块组成,除了第一层是两个普通的残差块组成,其它三层有一个普通的残差块和下采样的卷积块组成。输入图像为3x224x224格式,经过卷积池化后为64x112x112格式进入主网络架构。

代码如下:

import torch
from torch import nn
from torch.nn import functional as Fclass BasicBlock(nn.Module):def __init__(self,in_channels,out_channels,kernel_size,stride):super(BasicBlock,self).__init__()self.conv1=nn.Conv2d(in_channels,out_channels,kernel_size,stride,padding=1)self.bn1=nn.BatchNorm2d(out_channels)self.conv2=nn.Conv2d(out_channels,out_channels,kernel_size,stride,padding=1)self.bn2=nn.BatchNorm2d(out_channels)def forward(self,x):output=self.bn1(self.conv1(x))output=self.bn2(self.conv2(output))return F.relu(x+output)class BasicDownBlock(nn.Module):def __init__(self,in_channels,out_channels,kernel_size,stride):super(BasicDownBlock,self).__init__()     self.conv1=nn.Conv2d(in_channels,out_channels,kernel_size[0],stride[0],padding=1)self.bn1=nn.BatchNorm2d(out_channels)self.conv2=nn.Conv2d(out_channels,out_channels,kernel_size[0],stride[1],padding=1)self.bn2=nn.BatchNorm2d(out_channels)self.conv3=nn.Conv2d(in_channels,out_channels,kernel_size[1],stride[0])self.bn3=nn.BatchNorm2d(out_channels)def forward(self,x):output=self.bn1(self.conv1(x))output=self.bn2(self.conv2(output))output1=self.bn3(self.conv3(x))return F.relu(output1+output)class ResNet18(nn.Module):def __init__(self):super().__init__()# 3x224x224-->64x112x112self.conv1=nn.Conv2d(in_channels=3,out_channels=64,kernel_size=7,stride=2,padding=3)self.bn1=nn.BatchNorm2d(64)# 64x112x112-->64x56x56self.pool1=nn.MaxPool2d(kernel_size=3,stride=2,padding=1)# 64x56x56-->64x56x56self.layer1=nn.Sequential(BasicBlock(64,64,3,1),BasicBlock(64,64,3,1))# 64x56x56-->128*28*28self.layer2=nn.Sequential(BasicDownBlock(64,128,[3,1],[2,1]),BasicBlock(128,128,3,1))# 128*28*28-->256*14*14self.layer3=nn.Sequential(BasicDownBlock(128,256,[3,1],[2,1]),BasicBlock(256,256,3,1))# 256*14*14-->512x7x7self.layer4=nn.Sequential(BasicDownBlock(256,512,[7,1],[2,1]),BasicBlock(512,512,3,1))# 512x7x7-->512x1x1self.avgpool=nn.AdaptiveMaxPool2d(output_size=(1,1))self.flat=nn.Flatten()self.linear=nn.Linear(512,10)def forward(self,x):output=self.pool1(F.relu(self.bn1(self.conv1(x))))output=self.layer1(output)output=self.layer2(output)output=self.layer3(output)output=self.layer4(output)output=self.avgpool(output)output=self.flat(output)output=self.linear(output)return outputnet=ResNet18()
x=torch.randn(32,3,224,224)
print(x.shape)
y=net(x)
print(y.shape)

代码中BasicBlock为普通的残差块,注意步长和卷积核的大小,BasicDownBlock为下采样的残差块,然后将四层的网络表示出来,最后进行验证x.shape为torch.Size([32, 3, 224, 224]),y.shape为torch.Size([32, 10])。 


http://chatgpt.dhexx.cn/article/esZyv1m6.shtml

相关文章

ResNet18和ResNet50的keras实现

注意低版本的keras对一些包的引用方式跟高版本有区别,注意看章节1的代码注释部分。 TensorFlow跟Keras也有版本的对应关系,https://master–floydhub-docs.netlify.app/guides/environments/。 例如: 1.ResNet18 ResNet18 from tensorfl…

【学习笔记】resnet-18 pytorch源代码解读

目录 ResNet-18网络结构简图ResNet-18的代码结构残差块结构ResNet类构造方法和forward_make_layer方法 完整的ResNet-18结构图 使用的resnet-18的源代码来源于 PyTorch1.0, torchvision0.2.2 ResNet-18网络结构简图 ResNet(Residual Neural Network&a…

ResNet18详细原理(含tensorflow版源码)

ResNet18原理 ResNet18是一个经典的深度卷积神经网络模型,由微软亚洲研究院提出,用于参加2015年的ImageNet图像分类比赛。ResNet18的名称来源于网络中包含的18个卷积层。 ResNet18的基本结构如下: 输入层:接收大小为224x224的RG…

resnet18

前言 在前篇vgg16之后,无法成功训练vgg16,发现是自己电脑可用的显存太低了,遂放弃。 在2015 ILSVRC&COCO比赛中,何恺明团队提出的Resnet网络斩获第一,这是一个经典的网络。李沐说过,如果要学习一个CNN网…

ResNet18网络的具体构成

一、基础 RetNet网络的基础是残差块。 以下是原始论文所给出的最基础的残差块。后续可以对单残差块进行处理,如加入池化,批量化归一等各种操作。 二、最基本的的ResNet18 ResNet18的基本含义是,网络的基本架构是ResNet,网络的深…

【神经网络】(10) Resnet18、34 残差网络复现,附python完整代码

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

Resnet 18网络模型

1. 残差网络:(Resnet) 残差块: 让我们聚焦于神经网络局部:如图左侧所示,假设我们的原始输入为x,而希望学出的理想映射为f(x)(作为上方激活函数的输入)。左图虚线框中…

【ResNet】Pytorch从零构建ResNet18

Pytorch从零构建ResNet 第一章 从零构建ResNet18 第二章 从零构建ResNet50 文章目录 Pytorch从零构建ResNet前言一、ResNet是什么?1. 残差学习2. ResNet具体结构 二、ResNet分步骤实现三、完整例子测试总结 前言 ResNet 目前是应用很广的网络基础框架,所…

HTML+CSS 简单的顶部导航栏菜单制作

导航栏的制作: 技术要求: CSSHTML各类标签 实现目的: 制作导航栏菜单 代码分析: 基本样式清除无序列原点删除下划线删除文字默认居中a标签设置块级元素伪类选择器对a状态修饰 分步实现: 分三栏布局:…

WEB前端(7)—— 简单的 HTML+CSS 导航栏案例

适合每个新手的导航栏&#xff1a; 代码与运行效果如图&#xff1a; <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>导航栏</title><style type"text/css">ul{/*设置导航栏的框框*/margin: 30px…

CSS — 导航栏篇(一)

Navigation Bar Navigation Bar 是什么&#xff1f;这就是每个网站都会有的导航栏&#xff0c;本文将会带你接触导航栏的世界。首先我们需要了解导航栏的作用——它能快速帮助用户进行需求选择。一个清晰的导航栏能让用户第一时间了解网站的基本模块功能&#xff0c;而且作为网…

CSS + HTML导航栏效果

今天写了一个导航栏&#xff0c;需要的效果如下&#xff1a; 实现的代码思路如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>导航栏</title><style type"text/css&qu…

html+css创建侧边导航栏

效果&#xff1a; 代码&#xff1a; .left{position: fixed;width: 250px;height: 2000px;background-color: rgb(100, 93, 93);float: left;text-align: center; } .nav a{display: block;width: 247px;height: 70px;background-color: rgb(100, 93, 93);color: rgb(254, 254…

HTML5+CSS3制作底部导航栏

目录 前言 一、底部导航栏示例图 二、HTML框架 1.一号盒子 2.二号盒子 总结 ​​​​​​ 前言 在日常的网上冲浪中&#xff0c;我们常常在网页最底部&#xff0c;看到一大堆链接&#xff0c;非常整齐&#xff0c;一目了然&#xff0c;那么是如何实现的呢&#xff1f;..…

网页制作之侧边导航栏(只用HTML实现)

话不多说&#xff0c;上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" con…

CSS【导航栏】

导航栏链接列表 作为标准的HTML基础一个导航栏是必须的。在我们的例子中我们将建立一个标准的HTML列表导航栏。导航条基本上是一个链接列表&#xff0c;所以使用 <ul> 和 <li>元素非常有意义&#xff1a; <!DOCTYPE html><html><head><meta…

html中网页导航栏设置

以下内容是摘抄博客&#xff1a;https://www.runoob.com/css/css-navbar.html 设计导航窗口在左侧的显示如下&#xff1a; 代码部分则如下&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoo…

html左侧导航栏右侧显示内容

效果图 代码 复制下来直接运行就可以 <!doctype html> <html lang "en"><head><meta charset "UTF-8"><meta name "viewport"content "widthdevice-width, user-scalableno, initial-scale1.0, maximum-s…

导航栏的HTML的布局方式

1.利用浮动完成布局 以小米导航栏为例 <style>* {padding: 0;margin: 0;/* 通配符全选&#xff0c;取消内外边距的小缝隙 // 不建议使用通配符 */}header {width: 100%;background-color: #333333;/* 设置背景 */}div {width: 1226px;height: 40px;margin: auto;/* 设…

html里制作简单导航栏

今天简单的做了一下网页里的导航栏。 效果如下&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>实验3</title><style type"text/css">ul{/*设置导航栏的框框*/margi…