卷积神经网络:Residual Net(残差网络)的定义

import torch
import torch.nn as nn
import torch.nn.functional as F

class ResidualBlock(nn.Module): #残差块:将网络层进行组合,使得z=x+y(x与y同型)
    def __init__(self,channels):#输入通道数定为未知量,当实例化模型时可以调用
        super(ResidualBlock,self).__init__()
        self.channels=channels
        self.conv1=nn.Conv2d(channels,channels,kernel_size=3,padding=1) #输入输出的通道数不变
        self.conv2=nn.Conv2d(channels,channels,kernel_size=3,padding=1) #输入输出的通道数不变
    def forward(self,x):
        y=F.relu(self.conv1(x))
        y=self.conv2(y)            #经过两次卷积层+激活函数,第二次激活函数前与最先的x相加
        return F.relu(x+y)         #先求和后激活

class Net(nn.Module):
    def __init__(self):
        super(Net,self).__init__()
        self.conv1=nn.Conv2d(1,16,kernel_size=5)
        self.conv2=nn.Conv2d(16,32,kernel_size=5)
        self.mp=nn.MaxPool2d(2)

        self.rblock1=ResidualBlock(16)
        self.rblock2=ResidualBlock(32)

        self.fc=nn.Linear(512,20)

    def forward(self,x):
        in_size=x.size(0)
        x=self.mp(F.relu(self.conv1(x)))
        x=self.rblock1(x)
        x=self.mp(F.relu(self.conv2(x)))
        x = self.rblock2(x)
        x=x.view(in_size,-1)
        x=self.fc(x)
        return x

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShuaS2020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值