Home > other >  U - net learning
U - net learning

Time:09-26

 
The import torch. The nn as nn
The import torch
From the torch import autograd

The class DoubleConv (nn Module) :
Def __init__ (self, in_ch out_ch) :
Super (DoubleConv, self) __init__ ()
The self. The conv=nn. Sequential (
Nn. Conv2d (in_ch, out_ch, 3, padding=1),
Nn. BatchNorm2d (out_ch),
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 the self. Conv (input)


The 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)
The 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. The cat ([up_6, c4], dim=1)
C6=self. Conv6 (merge6)
Up_7=self. Up7 (c6)
Merge7=torch. The cat ([up_7, c3], dim=1)
C7=self. Conv7 (merge7)
Up_8=self. Up8 (c7)
Merge8=torch. The cat ([up_8, c2], dim=1)
C8=self. Conv8 (merge8)
Up_9=self. Up9 (c8)
Merge9=torch. The cat ([up_9, c1], dim=1)
C9=self. Conv9 (merge9)
C10=self. Conv10 (c9)
Out=nn. Sigmoid () (c10)
Return the out

  • Related