LeNet
In [ ]:
Copied!
import torch
import torch.nn as nn
import torch
import torch.nn as nn
In [ ]:
Copied!
class LeNet(nn.Module):
def __init__ (self, num_label=10):
super(LeNet, self).__init__()
self.net = nn.Sequential(
# C1 (1*32*32) 到 (6*28*28)
nn.Conv2d(in_channels=1,out_channels=6,kernel_size=5,stride=1,padding=0),
nn.ReLU(),
# S2 (6*28*28) 到 (6*14*14)
nn.AvgPool2d(kernel_size=2,stride=2),
# C3 (6*14*14) 到 (16*10*10)
nn.Conv2d(in_channels=6, out_channels=16,kernel_size=5, stride=1,padding=0),
nn.ReLU(),
# S4 (16*10*10) 到 (16*5*5)
nn.AvgPool2d(kernel_size=2, stride=2),
# C5 (16*5*5) 到 (120*1*1)
nn.Conv2d(in_channels=16,out_channels=120,kernel_size=5,stride=1,padding=0),
nn.ReLU(),
# 拉成向量
nn.Flatten(),
# F6 120 到 84
nn.Linear(120, 84),
nn.ReLU(),
# OUTPUT 84 到 10
nn.Linear(84, num_label)
)
def forward(self, x):
x = self.net(x)
return x
class LeNet(nn.Module):
def __init__ (self, num_label=10):
super(LeNet, self).__init__()
self.net = nn.Sequential(
# C1 (1*32*32) 到 (6*28*28)
nn.Conv2d(in_channels=1,out_channels=6,kernel_size=5,stride=1,padding=0),
nn.ReLU(),
# S2 (6*28*28) 到 (6*14*14)
nn.AvgPool2d(kernel_size=2,stride=2),
# C3 (6*14*14) 到 (16*10*10)
nn.Conv2d(in_channels=6, out_channels=16,kernel_size=5, stride=1,padding=0),
nn.ReLU(),
# S4 (16*10*10) 到 (16*5*5)
nn.AvgPool2d(kernel_size=2, stride=2),
# C5 (16*5*5) 到 (120*1*1)
nn.Conv2d(in_channels=16,out_channels=120,kernel_size=5,stride=1,padding=0),
nn.ReLU(),
# 拉成向量
nn.Flatten(),
# F6 120 到 84
nn.Linear(120, 84),
nn.ReLU(),
# OUTPUT 84 到 10
nn.Linear(84, num_label)
)
def forward(self, x):
x = self.net(x)
return x