LeNet网络的结构

 

 输入的32x32x1的单通道图片,

第一层网络: 3x3x1x6的卷积层,步长为1, padding = 1, 经过2x2的池化操作

第二层网络: 5x5x6x16的卷积层, 步长为1, padding = 2, 经过2x2的池化操作

第三层网络: 经过.view(out.size(0), -1)的尺度变化, 通过400, 120 的第一层全连接, 通过120, 84的第二层全连接, 通过84, 10的第三层全连接。

LeNet.py 

import torch
from torch import nn

class Lenet(nn.Module):
    def __init__(self):
        super(Lenet, self).__init__()

        layer1 = nn.Sequential()
        layer1.add_module('conv1', nn.Conv2d(1, 6, 3, padding=1))
        layer1.add_module('pool1', nn.MaxPool2d(2, 2))
        self.layer1 = layer1

        layer2 = nn.Sequential()
        layer2.add_module('conv2', nn.Conv2d(6, 16, 5))
        layer2.add_module('pool2', nn.MaxPool2d(2, 2))
        self.layer2 = layer2

        layer3 = nn.Sequential()
        layer3.add_module('fc1', nn.Linear(400, 120))
        layer3.add_module('fc2', nn.Linear(120, 84))
        layer3.add_module('fc3', nn.Linear(84, 10))
        self.layer3 = layer3

    def forward(self, x):
        x = self.layer1(x)
        x = self.layer2(x)
        x = x.view(x.size(0), -1)
        x = self.layer3(x)

        return x

 

posted on 2019-10-23 21:37  python我的最爱  阅读(402)  评论(0编辑  收藏  举报