window 学习pytorch unet代码之self.inc = DoubleConv(n_channels, 64)

本文详细解析了PyTorch实现的UNet网络中DoubleConv模块的工作原理。该模块通过两次卷积、批归一化及ReLU激活函数,实现从输入通道到输出通道的转换,为网络学习提供基础的特征提取能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

self.inc = DoubleConv(n_channels, 64)

可以猜测,channels是输入channel,64是要输出的channel

看看DoubleConv函数的具体实现

class DoubleConv(nn.Module):
    """(convolution => [BN] => ReLU) * 2"""

    def __init__(self, in_channels, out_channels, mid_channels=None):
        super().__init__()
        if not mid_channels:
            mid_channels = out_channels
        self.double_conv = nn.Sequential(
            nn.Conv2d(in_channels, mid_channels, kernel_size=3, padding=1),
            nn.BatchNorm2d(mid_channels),
            nn.ReLU(inplace=True),
            nn.Conv2d(mid_channels, out_channels, kernel_size=3, padding=1),
            nn.BatchNorm2d(out_channels),
            nn.ReLU(inplace=True)
        )

可以看到DoubleConv也是nn.Module的子类windows pytorch Unet网络实现二,网络学习的前两层卷积,就在这里实现了。第一~二句mid_channels=none因此mid_channels就是out_channels=64.

第三句将这两层卷积打包进nn.Sequential(有点像tensorflow中的operation可以将各个tensor放进去一样)。既可以放卷阶层,也可以以dic的形式存放。

第四~九句构建了两层网络,第一层输入3channel,输出64channe第二层输入64channel输出64channel,其中激活函数选择了ReLU,比较流行的激活函数。在conv2d和ReLU中间是nn.BatchNorm2d从字面意思理解是归一化操作。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值