Resnet网络--BasicBlock与BottleNeck
ResNetV2的网络深度有18,34,50,101,152。50层以下的网络基础块是BasicBlock,50层及以上的网络基础块是BottleNeck。
BasicBlock
图示如下

代码实现
1 class BasicBlock(nn.Module):
2 expansion = 1
3 def __init__(self, in_channel, out_channel, stride=1, downsample=None):
4 super(BasicBlock, self).__init__()
5 self.conv1 = conv3x3(in_channel, out_channel, stride)
6 self.bn1 = nn.BatchNorm2d(out_channel)
7 self.relu = nn.ReLU(inplace=True)
8 self.conv2 = conv3x3(out_channel, out_channel)
9 self.bn2 = nn.BatchNorm2d(out_channel)
10 self.downsample = downsample
11 self.stride =stride
12
13 def forward(self, x):
14 residual = x
15 out = self.conv1(x)
16 out = self.bn1(out)
17 out = self.relu(out)
18 out = self.conv2(out)
19 out = self.bn2(out)
20 if self.downsample is not None:
21 residual = self.downsample(x)
22
23 out = out + residual
24 out = self.relu(out)
25
26 return out
BottleNeck
图示如下

代码实现:
1 class Bottleneck(nn.Module):
2
3 expansion = 4
4
5 def __init__(self, in_channel, out_channel, stride=1, downsample=None):
6 super(Bottleneck, self).__init__()
7
8 self.conv1 = nn.Conv2d(in_channel, out_channel, kernel_size=1, stride=stride, bias=False)
9 self.bn1 = nn.BatchNorm2d(out_channel)
10
11 self.conv2 = nn.Conv2d(out_channel, out_channel, kernel_size=3, stride=1, padding=1, bias=False) # stride = 3
12 self.bn2 = nn.BatchNorm2d(out_channel)
13
14 self.conv3 = nn.Conv2d(out_channel, out_channel * 4, kernel_size=1, bias=False)
15 self.bn3 = nn.BatchNorm2d(out_channel * 4)
16
17 self.relu = nn.ReLU(inplace=True)
18 self.stride = stride
19 self.downsample =downsample
20
21
22 def forward(self, x):
23 residual = x
24
25 out = self.conv1(x)
26 out = self.bn1(out)
27 out = self.relu(out)
28
29 out = self.conv2(out)
30 out = self.bn2(out)
31 out = self.relu(out)
32
33 out = self.conv3(out)
34 out = self.bn3(out)
35
36 if self.downsample is not None:
37 residual = self.downsample(x)
38
39 out = out + residual
40 out = self.relu(out)
41
42 return out
Resnet网络--BasicBlock与BottleNeck的更多相关文章
- 深度学习之ResNet网络
介绍 Resnet分类网络是当前应用最为广泛的CNN特征提取网络. 我们的一般印象当中,深度学习愈是深(复杂,参数多)愈是有着更强的表达能力.凭着这一基本准则CNN分类网络自Alexnet的7层发展到 ...
- PyTorch对ResNet网络的实现解析
PyTorch对ResNet网络的实现解析 1.首先导入需要使用的包 import torch.nn as nn import torch.utils.model_zoo as model_zoo # ...
- Resnet网络详细结构(针对Cifar10)
Resnet网络详细结构(针对Cifar10) 结构 具体结构(Pytorch) conv1 (conv1): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, ...
- 学习笔记-ResNet网络
ResNet网络 ResNet原理和实现 总结 一.ResNet原理和实现 神经网络第一次出现在1998年,当时用5层的全连接网络LetNet实现了手写数字识别,现在这个模型已经是神经网络界的“hel ...
- ResNet网络再剖析
随着2018年秋季的到来,提前批和内推大军已经开始了,自己也成功得当了几次炮灰,不过在总结的过程中,越是了解到自己的不足,还是需要加油. 最近重新复习了resnet网络,又能发现一些新的理念,感觉很f ...
- 0609-搭建ResNet网络
0609-搭建ResNet网络 目录 一.ResNet 网络概述 二.利用 torch 实现 ResNet34 网络 三.torchvision 中的 resnet34网络调用 四.第六章总结 pyt ...
- ResNet网络的训练和预测
ResNet网络的训练和预测 简介 Introduction 图像分类与CNN 图像分类 是指将图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法,是计算机视觉中其他任务,比如目标检测 ...
- ResNet网络的Pytorch实现
1.文章原文地址 Deep Residual Learning for Image Recognition 2.文章摘要 神经网络的层次越深越难训练.我们提出了一个残差学习框架来简化网络的训练,这些 ...
- 深度残差网络(DRN)ResNet网络原理
一说起“深度学习”,自然就联想到它非常显著的特点“深.深.深”(重要的事说三遍),通过很深层次的网络实现准确率非常高的图像识别.语音识别等能力.因此,我们自然很容易就想到:深的网络一般会比浅的网络效果 ...
- 深度残差网络——ResNet学习笔记
深度残差网络—ResNet总结 写于:2019.03.15—大连理工大学 论文名称:Deep Residual Learning for Image Recognition 作者:微软亚洲研究院的何凯 ...
随机推荐
- (K8s学习笔记七)Pod的升级和回滚
1.Deployment的升级 示例:滚动升级busybox-deployment容器 apiVersion: apps/v1 kind: Deployment metadata: name: bus ...
- nop 中创建任务(Task)
NopCommerce 中Task 原理是服务端开启线程定时跑. 1.在数据表ScheduleTask中添加一条数据, 2.自定义类,继承ITask 即可 using Data.Log4Net; us ...
- 不安全的权限 0644,建议使用 0600 虚拟机无法分配内存 virtual memory exhausted: Cannot allocate memory
我都不知道我写了啥,自己都很混乱 aoteman@aoteman-virtual-machine:/tmp$ sudo -s #进入root用户模式 [sudo] aoteman 的密码: 12对不起 ...
- C语言学习---星花与取地址&----以及多级指针
#include<stdio.h> int main { //对一个表达式加* , 就会对表达式减一级星花*, //如果对表达式取&, 就会加一级* int* p; int** q ...
- java 动手动脑 方法重载
如下代码://MethodOverload.java //Using overloaded methods package HJssss; public class zhuce { public st ...
- TCP协议之三次握手(二)
本节主要研究三次握手出现的一些异常情况和编程相关的知识: 上一节分析了三次握手的过程,本节会回答一些三次握手的小问题,然后利用linux系统调用实践一下简单的网络的编程. 三次握手的常见问题 Q 向一 ...
- 如何把接口返回文件流读取后写入Excel
代码: res = res.content #接口返回的内容 with open(path,mode='wb') as file: #excel的路径 file.write(res)
- windows 批量杀进程
1 import psutil 2 from subprocess import Popen, PIPE 3 4 process_name ="bsmr.exe,fxclient.exe,F ...
- Software--电商平台系统--P2 支撑基础设施 Infrastructure
2018-01-11 18:19:49 架构 客户体验 Ajax 交互技术. 网站快速加载且响应灵敏,则应该缓存商品数据. 灵活的缓存机制,以支持任何类型的存储(即分布式存储或内存中存储). 日志功 ...
- k8s 更改pod数量限制(默认每个节点最多110组pod)
1.登录 node 节点,查看kubelet启动文件路径 [root@xxxxxxxZ ~]# systemctl status kubelet ● kubelet.service - kubel ...