digit-recognizer / lenet.py
Afonso B. Sousa
Initial version.
3667c92 unverified
# AUTOGENERATED! DO NOT EDIT! File to edit: simple_network.ipynb.
# %% auto 0
__all__ = ['LeNet5']
# %% simple_network.ipynb 1
#%matplotlib inline
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torchvision
import torchvision.transforms as transforms
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
# %% simple_network.ipynb 4
class LeNet5(nn.Module):
def __init__(self, num_classes):
super().__init__()
self.l1 = nn.Sequential(
nn.Conv2d(in_channels=1, out_channels=6, kernel_size=5, stride=1, padding=2), # 28*28-->32*32-->28*28
nn.BatchNorm2d(6),
nn.ReLU(),
nn.MaxPool2d(kernel_size = 2, stride = 2))
self.l2 = nn.Sequential(
nn.Conv2d(in_channels=6, out_channels=16, kernel_size=5, stride=1, padding=0), # 10*10
nn.BatchNorm2d(16),
nn.ReLU(),
nn.MaxPool2d(kernel_size = 2, stride = 2))
self.classifier = nn.Sequential(
nn.Flatten(),
nn.Linear(in_features=16*5*5, out_features=120),
nn.ReLU(),
nn.Linear(in_features=120, out_features=84),
nn.ReLU(),
nn.Linear(in_features=84, out_features=num_classes),
)
def forward(self, x):
out = self.l1(x)
out = self.l2(out)
out = self.classifier(out)
return out