Pytorch构造神经网络的几种等价方式

几种构造方式
比较常用的两种方式
1、通过集成nn.Module()来定义一个神经网络
以LeNet为例

# LeNet:卷积+池化+卷积+池化+全连接+全连接+全连接(两层卷积+三层全连接,一共5层)
class Net(nn.Module):
    def __init__(self):
        super().__init__()
        self.Cv = nn.Sequential(
            nn.Conv2d(1,6,kernel_size= 5),
            nn.MaxPool2d(2,2),
            nn.ReLU(),
            nn.Conv2d(6,16,kernel_size= 5),
            nn.MaxPool2d(2,2),
            nn.ReLU()
        ) 
        self.Linear = nn.Sequential(
            nn.Linear(16*4*4,120),
            nn.ReLU(),
            nn.Linear(120,84),
            nn.ReLU(),
            nn.Linear(84,10)
        )
    def forward(self,x):
        x = self.Cv(x)
        x = self.Linear(x.view(x.shape[0],-1))
        return x
net = Net()

2、当模型的计算就是简单的串联各个层时,可以直接使用nn.Senquential()来构造,直接叠加传播层即可,不需要定义forward函数。

#LeNet
net = nn.Sequential(nn.Conv2d(1,6,kernel_size=5),
                    nn.MaxPool2d(2,2),
                    nn.ReLU(),
                    nn.Conv2d(6,16,kernel_size=5),
                    nn.MaxPool2d(2,2),
                    nn.ReLU(),
                    nn.Flatten(),
                    #这一步的作用就是对输入的image进行扁平化处理,相当于x = x.view(x.shape[0],-1),然后再让我们的X进入Linear
                    nn.Linear(16*4*4,120),nn.ReLU(),nn.Linear(120,84),nn.ReLU(),nn.Linear(84,10))
这样构造的net和上面的net是等价的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值