Kaiming He的深度残差网络(ResNet)在深度学习的发展中起到了很重要的作用。
在这一结构中解决了训练深度网络时的梯度消失问题。

# -*- coding: utf-8 -*-
"""
Created on Sat Jul  7 12:13:58 2018@author: Duan
"""from torch import nn
from torch.nn import functional as F
import torch as tclass ResidualBlock(nn.Module):'''实现子Module:ResidualBlock'''def __init__(self, inchannel, outchannel, stride=1, shortcut=None):super(ResidualBlock,self).__init__()self.left=nn.Sequential(nn.Conv2d(inchannel, outchannel, 3, stride, 1 , bias=False),nn.BatchNorm2d(outchannel),nn.ReLU(inplace=True),nn.Conv2d(outchannel, outchannel, 3,1,1,bias=False),nn.BatchNorm2d(outchannel))self.right=shortcutdef forward(self,x):out=self.left(x)residual=x if self.right is None else self.right(x)out+=residualreturn F.relu(out)class ResNet(nn.Module):'''实现主Module:ResNet34ResNet34包含多个layer,每个layer又包含多个reesidal block用子module实现residual block,用_make_layer函数实现layer'''def __init__(self, num_classes=1000):super(ResNet,self).__init__()#前几层图像转换self.pre=nn.Sequential(nn.Conv2d(3,64,7,2,3,bias=False),nn.BatchNorm2d(64),nn.ReLU(inplace=True),nn.MaxPool2d(3,2,1))#重复的layer,分别有3,4,6,3个residual blockself.layer1=self._make_layer(64, 128 ,  3)self.layer2=self._make_layer(128, 256 , 4, stride=2)self.layer3=self._make_layer(256, 512 , 6, stride=2)self.layer4=self._make_layer(512, 512 , 3, stride=2)#分类用的全连接self.fc=nn.Linear(512,num_classes)def _make_layer(self, inchannel, outchannel, block_num, stride=1):'''构建layer,包含多个residual'''shortcut=nn.Sequential(nn.Conv2d(inchannel, outchannel, 1, stride, bias=False),nn.BatchNorm2d(outchannel))layers=[]layers.append(ResidualBlock(inchannel, outchannel, stride, shortcut))for i in range(1, block_num):layers.append(ResidualBlock(outchannel, outchannel))return nn.Sequential(*layers)def forward(self,x):x=self.pre(x)x=self.layer1(x) x=self.layer2(x)x=self.layer3(x)x=self.layer4(x)x=F.avg_pool2d(x,7)x=x.view(x.size(0),-1)return self.fc(x)model=ResNet()
#print(model)input= t.autograd.Variable(t.randn(1,3,224,224))
o=model(input)
print(o.size())

结果:

torch.Size([1, 1000])

另外,Pytorch配套的图像处理工具包torchvision已经实现了深度学习中大多数经典的模型,其中就包括ResNet34. 可以通过下面的两行代码使用:

from torchvision import models
model=models.resnet34()

Pytorch——用50行代码搭建ResNet相关推荐

  1. 【PyTorch】50行代码实现GAN——PyTorch

    本文来源于PyTorch中文网. 一直想了解GAN到底是个什么东西,却一直没能腾出时间来认真研究,前几日正好搜到一篇关于PyTorch实现GAN训练的文章,特将学习记录如下,本文主要包含两个部分:GA ...

  2. python爬虫实战:利用scrapy,短短50行代码下载整站短视频

    近日,有朋友向我求助一件小事儿,他在一个短视频app上看到一个好玩儿的段子,想下载下来,可死活找不到下载的方法.这忙我得帮,少不得就抓包分析了一下这个app,找到了视频的下载链接,帮他解决了这个小问题 ...

  3. python实现50行代码_50行代码实现python计算器主要功能

    实现功能:计算带有括号和四则运算的式子 3*( 4+ 50 )-(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4) 基本思路:使用正则表达式提取出每一层小括 ...

  4. 如何用50行代码构建情感分类器

    选自Toward Data Science,作者:Rohith Gandhi,机器之心编译. 本文介绍了如何构建情感分类器,从介绍自然语言处理开始,一步一步讲述构建过程. 自然语言处理简介 语言把人类 ...

  5. pyquery获取不到网页完整源代码_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...

    爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网 前言 上篇文章 PyQuery (一) 回顾.今天来介绍具体 PyQuery 的使用方法. 穷游网目标与分析 开始之前,按照之前的套路一步 ...

  6. python跑酷游戏源码_HTML5游戏实战(1):50行代码实现正面跑酷游戏

    前段时间看到一个"熊来了"的HTML5跑酷游戏,它是一个典型的正面2D跑酷游戏,这里借用它来介绍一下用Gamebuilder+CanTK开发正面跑酷游戏的基本方法. CanTK(C ...

  7. 转:目标50行代码之内完成3d编辑器功能

    1024程序员节刚过,手痒想实现一个html的3d编辑器,看了three.js  同时还看了网上流传已久的<<基于 HTML5 Canvas 的简易 2D 3D 编辑器>>,都 ...

  8. 利用scrapy,短短50行代码下载整站短视频

    一.撕开爬虫的面纱--爬虫是什么,它能做什么 爬虫是什么 爬虫就是一段能够从互联网上高效获取数据的程序. 我们每天都在从互联网上获取数据.当打开浏览器访问百度的时候,我们就从百度的服务器获取数据,当拿 ...

  9. 50行代码实现的艺术签名设计微信小程序,轻松对接公众号,涨粉神器,学习赚钱两不误.微信公众号引流工具.html,python学习小项目.艺术签名设计微信小程序,前端学习小项目有趣的项目

    50行代码实现的艺术签名设计微信小程序,轻松对接公众号,涨粉神器,学习赚钱两不误 先看效果 这个小程序实现艺术签名设计的功能 对接到公众号之后,相当于给你的公众号添加了一个功能,别人关注公众号后,可以 ...

  10. python pyquery不规则数据的抓取_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...

    爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网 前言 上篇文章 PyQuery (一) 回顾.今天来介绍具体 PyQuery 的使用方法. 穷游网目标与分析 开始之前,按照之前的套路一步 ...

最新文章

  1. 7-26 单词长度 (C语言)
  2. 函数空间中的最佳逼近
  3. javascript原型链中 this 的指向
  4. 操作系统上机题目(多进程1)
  5. bzoj 1010: [HNOI2008]玩具装箱toy(斜率dp)
  6. 信号与系统(六)z变换
  7. android 微信地图定位失败,微信端H5使用百度地图定位获取当前位置安卓定位不准...
  8. Google地图坐标拾取器,地图选点,获取经纬度
  9. IDEA中Dubugger设置
  10. 红孩儿编辑器的模块设计5
  11. python h5py 创建无限数据集、在无限数据集上添加新的数据
  12. Linux系统vscode断点单步运行调试C++程序
  13. Android—ImageView—自定义四个圆角角度
  14. Smarty核心内容:Smarty基本安装与调试
  15. 锂离子电池--SEI膜
  16. 毕业前后的报到和档案相关处理
  17. kong API gateway(三):consumers
  18. 手机淘宝搜索排名的那些规则你知道多少?
  19. android概述和环境搭建
  20. Biu~送你 20 个提供远程工作的网站,都很棒

热门文章

  1. python部署到linux打开ie_Linux上部署python+selenium+webdriver常见问题解决方案
  2. c bool 类型检查_第3篇:C/C++ 检查数字类型的最高有效位(MSB)
  3. dos下载ftp文件linux,在DOS和LINUX下的FTP命令
  4. php动态交叉表,SQLServer:SQL实现动态交叉表
  5. redis的发布和订阅
  6. linux把profile文件删了怎么办,误删Profile后的处理
  7. JavaWeb:XML
  8. jQuery:点击某元素后根据兄弟节点是否显示,控制兄弟节点的显示与否
  9. Javascript特效:阿鲁的相册
  10. 科研_研究生学术论文写作方法