1
- from PIL import Image
1
+ import numpy as np
2
2
import torch
3
3
import torch .nn as nn
4
4
import torch .optim as optim
5
- from torchvision import datasets , transforms
5
+ from cnn import CNN , train
6
+ from PIL import Image
6
7
from torch .utils .data import DataLoader
7
- import numpy as np
8
+ from torchvision import datasets , transforms
8
9
9
10
# Step 1: Load MNIST Data and Preprocess
10
11
transform = transforms .Compose ([
11
- transforms .ToTensor (),
12
+ transforms .ToTensor (),
12
13
transforms .Normalize ((0.5 ,), (0.5 ,))
13
14
])
14
15
15
16
trainset = datasets .MNIST ('.' , download = True , train = True , transform = transform )
16
17
trainloader = DataLoader (trainset , batch_size = 64 , shuffle = True )
17
18
18
- # Step 2: Define the PyTorch Model
19
- class Net ( nn . Module ):
20
- def __init__ ( self ):
21
- super (). __init__ ()
22
- self . fc1 = nn . Linear ( 28 * 28 , 128 )
23
- self . fc2 = nn . Linear ( 128 , 64 )
24
- self . fc3 = nn . Linear ( 64 , 10 )
19
+
20
+
21
+
22
+
23
+
24
+
25
+
25
26
26
- def forward ( self , x ):
27
- x = x . view ( - 1 , 28 * 28 )
28
- x = nn . functional . relu ( self . fc1 ( x ))
29
- x = nn . functional . relu ( self . fc2 ( x ))
30
- x = self . fc3 ( x )
31
- return nn . functional . log_softmax ( x , dim = 1 )
32
-
33
- # Step 3: Train the Model
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
34
35
model = Net ()
36
+ model = CNN ()
35
37
optimizer = optim .SGD (model .parameters (), lr = 0.01 )
36
38
criterion = nn .NLLLoss ()
37
39
38
40
# Training loop
39
- epochs = 3
40
- for epoch in range (epochs ):
41
- for images , labels in trainloader :
42
- optimizer .zero_grad ()
43
- output = model (images )
44
- loss = criterion (output , labels )
45
- loss .backward ()
46
- optimizer .step ()
41
+ train (model , trainloader , optimizer )
42
+
47
43
48
44
torch .save (model .state_dict (), "mnist_model.pth" )
0 commit comments