import torch.nn as nn
import torch
from torch import autograd#把常用的2个卷积操作简单封装下
class DoubleConv(nn.Module):def __init__(self, in_ch, out_ch):super(DoubleConv, self).__init__()self.conv = nn.Sequential(nn.Conv2d(in_ch, out_ch, 3, padding=1),nn.BatchNorm2d(out_ch), #添加了BN层nn.ReLU(inplace=True),nn.Conv2d(out_ch, out_ch, 3, padding=1),nn.BatchNorm2d(out_ch),nn.ReLU(inplace=True))def forward(self, input):return self.conv(input)class Unet(nn.Module):def __init__(self, in_ch, out_ch):super(Unet, self).__init__()self.conv1 = DoubleConv(in_ch, 64)self.pool1 = nn.MaxPool2d(2)self.conv2 = DoubleConv(64, 128)self.pool2 = nn.MaxPool2d(2)self.conv3 = DoubleConv(128, 256)self.pool3 = nn.MaxPool2d(2)self.conv4 = DoubleConv(256, 512)self.pool4 = nn.MaxPool2d(2)self.conv5 = DoubleConv(512, 1024)# 逆卷积,也可以使用上采样self.up6 = nn.ConvTranspose2d(1024, 512, 2, stride=2)self.conv6 = DoubleConv(1024, 512)self.up7 = nn.ConvTranspose2d(512, 256, 2, stride=2)self.conv7 = DoubleConv(512, 256)self.up8 = nn.ConvTranspose2d(256, 128, 2, stride=2)self.conv8 = DoubleConv(256, 128)self.up9 = nn.ConvTranspose2d(128, 64, 2, stride=2)self.conv9 = DoubleConv(128, 64)self.conv10 = nn.Conv2d(64, out_ch, 1)def forward(self, x):c1 = self.conv1(x)p1 = self.pool1(c1)c2 = self.conv2(p1)p2 = self.pool2(c2)c3 = self.conv3(p2)p3 = self.pool3(c3)c4 = self.conv4(p3)p4 = self.pool4(c4)c5 = self.conv5(p4)up_6 = self.up6(c5)merge6 = torch.cat([up_6, c4], dim=1)c6 = self.conv6(merge6)up_7 = self.up7(c6)merge7 = torch.cat([up_7, c3], dim=1)c7 = self.conv7(merge7)up_8 = self.up8(c7)merge8 = torch.cat([up_8, c2], dim=1)c8 = self.conv8(merge8)up_9 = self.up9(c8)merge9 = torch.cat([up_9, c1], dim=1)c9 = self.conv9(merge9)c10 = self.conv10(c9)out = nn.Sigmoid()(c10)return out

U-Net Pytorch实现相关推荐

  1. 通过anaconda2安装python2.7和安装pytorch

    ①由于官网下载anaconda2太慢,最好去byrbt下载,然后安装就行 ②安装完anaconda2会自动安装了python2.7(如终端输入python即进入python模式) 但是可能没有设置环境 ...

  2. 记录一次简单、高效、无错误的linux上安装pytorch的过程

    1 准备miniconda Miniconda Miniconda 可以理解成Anaconda的免费.浓缩版.它非常小,只包含了conda.python以及它们依赖的一些包.我们可以根据我们的需要再安 ...

  3. 各种注意力机制PyTorch实现

    给出了整个系列的PyTorch的代码实现,以及使用方法. 各种注意力机制 Pytorch implementation of "Beyond Self-attention: External ...

  4. PyTorch代码调试利器_TorchSnooper

    GitHub 项目地址: https://github.com/zasdfgbnm/TorchSnooper 大家可能遇到这样子的困扰:比如说运行自己编写的 PyTorch 代码的时候,PyTorch ...

  5. pytorch常用代码

    20211228 https://mp.weixin.qq.com/s/4breleAhCh6_9tvMK3WDaw 常用代码段 本文代码基于 PyTorch 1.x 版本,需要用到以下包: impo ...

  6. API pytorch tensorflow

    pytorch与tensorflow API速查表 方法名称 pytroch tensorflow numpy 裁剪 torch.clamp(x, min, max) tf.clip_by_value ...

  7. tensor转换 pytorch tensorflow

    一.tensorflow的numpy与tensor互转 1.数组(numpy)转tensor 利用tf.convert_to_tensor(numpy),将numpy转成tensor >> ...

  8. tensor和模型 保存与加载 PyTorch

    PyTorch教程-7:PyTorch中保存与加载tensor和模型详解 保存和读取Tensor PyTorch中的tensor可以保存成 .pt 或者 .pth 格式的文件,使用torch.save ...

  9. detach detach_ pytorch

    pytorch中的detach和detach_ pytorch 的 Variable 对象中有两个方法,detach和 detach_ : detach 官方文档中,对这个方法是这么介绍的. 返回一个 ...

  10. linux pytorch 快速安装

    https://pypi.tuna.tsinghua.edu.cn/simple/torch/ pytorch 清华源 pip 默认为系统的python2.7 pip3 为安装的最高版本 linux安 ...

最新文章

  1. 重装windows installer
  2. 转:百万级访问量网站的技术准备工作
  3. Merry Christmas Happy New Year!!
  4. 微信支付php案例,小程序微信支付php案例
  5. java利用数组随机抽取幸运观众_java利用数组随机抽取幸运观众
  6. C#高级编程9 第18章 部署
  7. 通过编写串口助手工具学习MFC过程——(三)Unicode字符集的宽字符和多字节字符转换...
  8. 修改命令有趣的Linux命令
  9. 批量插入数据 C# SqlBulkCopy使用
  10. 各类经纬度转换工具类
  11. 在线编辑word文档
  12. java老王博客_老王的JAVA基础课:第5课 面向对象
  13. mysql 伪表_伪表和伪列
  14. 大数据BI工具Tableau学习【第一期】:Tableau简介和安装
  15. 机器学习服务文本识别能力演进,大幅提升识别准确率
  16. 干货:如何打造一个直播平台
  17. 使用JME3开发的Android 3D游戏 - 落樱之剑v2.2
  18. vue返回上一页面时记忆回到原先滚动的位置
  19. R语言DCC-GARCH模型
  20. 多指标面板数据因子分析

热门文章

  1. 计组之存储系统:8、Cache写策略(全写法、写回法、写分配法、非写分配法、多级Cache)
  2. matlab中图像处理的基本函数(2)
  3. nmake错误:VC\bin\cl.EXE: 返回代码“0xc0000135“
  4. SQLAlchemy 教程 —— 进阶篇
  5. 12.IDA-虚函数和虚表(vf代表虚函数,vf3代表this指向第三个函数)
  6. 浅入深出Vue:子组件与数据传递
  7. 非常详尽的 Shiro 架构解析
  8. 特征工程 - 机器学习
  9. linux 搭建testlink的问题总结
  10. vijos p1433——火炬手之梦