Abdullah-Nazhat commited on
Commit
761aa3b
·
verified ·
1 Parent(s): e5d465c

Update train.py

Browse files
Files changed (1) hide show
  1. train.py +5 -36
train.py CHANGED
@@ -7,8 +7,6 @@ from torchvision import datasets
7
  from torchvision.transforms import ToTensor, Normalize, Compose
8
  from normalizer import Normalizer
9
 
10
-
11
-
12
  transform = Compose([
13
 
14
  ToTensor(),
@@ -29,27 +27,21 @@ test_data = datasets.CIFAR10(
29
  download=True,
30
  transform=transform
31
  )
32
-
33
-
34
  batch_size = 128
35
 
36
  train_dataloader = DataLoader(training_data, batch_size=batch_size,shuffle=True)
37
  test_dataloader = DataLoader(test_data, batch_size=batch_size)
38
 
39
-
40
  for X, y in test_dataloader:
41
  print(f"Shape of X [N,C,H,W]:{X.shape}")
42
  print(f"Shape of y:{y.shape}{y.dtype}")
43
  break
44
 
45
-
46
-
47
  device = "cuda" if torch.cuda.is_available() else "cpu"
48
 
49
  print(f"using {device} device")
50
 
51
-
52
-
53
  class NormalizerImageClassification(Normalizer):
54
  def __init__(
55
  self,
@@ -60,10 +52,9 @@ class NormalizerImageClassification(Normalizer):
60
  d_model = 256,
61
  num_tokens = 64,
62
  num_layers=4,
63
-
64
-
65
  ):
66
- super().__init__(d_model,num_tokens, num_layers)
67
  self.patcher = nn.Conv2d(
68
  in_channels, d_model, kernel_size=patch_size, stride=patch_size
69
  )
@@ -83,14 +74,9 @@ class NormalizerImageClassification(Normalizer):
83
  model = NormalizerImageClassification().to(device)
84
  print(model)
85
 
86
-
87
-
88
  loss_fn = nn.CrossEntropyLoss()
89
  optimizer = torch.optim.Adam(model.parameters(),lr=1e-3)
90
 
91
-
92
-
93
-
94
  def train(dataloader, model, loss_fn, optimizer):
95
  size = len(dataloader.dataset)
96
  num_batches = len(dataloader)
@@ -99,12 +85,10 @@ def train(dataloader, model, loss_fn, optimizer):
99
  correct = 0
100
  for batch, (X,y) in enumerate(dataloader):
101
  X, y = X.to(device), y.to(device)
102
-
103
-
104
  pred = model(X)
105
  loss = loss_fn(pred,y)
106
-
107
-
108
  optimizer.zero_grad()
109
  loss.backward()
110
  optimizer.step()
@@ -112,9 +96,6 @@ def train(dataloader, model, loss_fn, optimizer):
112
  _, labels = torch.max(pred.data, 1)
113
  correct += labels.eq(y.data).type(torch.float).sum()
114
 
115
-
116
-
117
-
118
  if batch % 100 == 0:
119
  loss, current = loss.item(), batch * len(X)
120
  print(f"loss: {loss:>7f} [{current:>5d}/{size:>5d}]")
@@ -124,10 +105,6 @@ def train(dataloader, model, loss_fn, optimizer):
124
  print(train_accuracy)
125
  return train_loss,train_accuracy
126
 
127
-
128
-
129
-
130
-
131
  def test(dataloader, model, loss_fn):
132
  size = len(dataloader.dataset)
133
  num_batches = len(dataloader)
@@ -146,10 +123,6 @@ def test(dataloader, model, loss_fn):
146
  test_accuracy = 100*correct
147
  return test_loss, test_accuracy
148
 
149
-
150
-
151
-
152
-
153
  logname = "/PATH/Normalizer/Experiments_cifar10/logs_normalizer/logs_cifar10.csv"
154
  if not os.path.exists(logname):
155
  with open(logname, 'w') as logfile:
@@ -157,7 +130,6 @@ if not os.path.exists(logname):
157
  logwriter.writerow(['epoch', 'train loss', 'train acc',
158
  'test loss', 'test acc'])
159
 
160
-
161
  epochs = 100
162
  for epoch in range(epochs):
163
  print(f"Epoch {epoch+1}\n-----------------------------------")
@@ -169,10 +141,7 @@ for epoch in range(epochs):
169
  test_loss, test_acc])
170
  print("Done!")
171
 
172
-
173
-
174
  path = "/PATH/Normalizer/Experiments_cifar10/weights_normalizer"
175
  model_name = "NormalizerImageClassification_cifar10"
176
  torch.save(model.state_dict(), f"{path}/{model_name}.pth")
177
  print(f"Saved Model State to {path}/{model_name}.pth ")
178
-
 
7
  from torchvision.transforms import ToTensor, Normalize, Compose
8
  from normalizer import Normalizer
9
 
 
 
10
  transform = Compose([
11
 
12
  ToTensor(),
 
27
  download=True,
28
  transform=transform
29
  )
30
+
 
31
  batch_size = 128
32
 
33
  train_dataloader = DataLoader(training_data, batch_size=batch_size,shuffle=True)
34
  test_dataloader = DataLoader(test_data, batch_size=batch_size)
35
 
 
36
  for X, y in test_dataloader:
37
  print(f"Shape of X [N,C,H,W]:{X.shape}")
38
  print(f"Shape of y:{y.shape}{y.dtype}")
39
  break
40
 
 
 
41
  device = "cuda" if torch.cuda.is_available() else "cpu"
42
 
43
  print(f"using {device} device")
44
 
 
 
45
  class NormalizerImageClassification(Normalizer):
46
  def __init__(
47
  self,
 
52
  d_model = 256,
53
  num_tokens = 64,
54
  num_layers=4,
55
+
 
56
  ):
57
+ super().__init__(d_model, num_tokens, num_layers)
58
  self.patcher = nn.Conv2d(
59
  in_channels, d_model, kernel_size=patch_size, stride=patch_size
60
  )
 
74
  model = NormalizerImageClassification().to(device)
75
  print(model)
76
 
 
 
77
  loss_fn = nn.CrossEntropyLoss()
78
  optimizer = torch.optim.Adam(model.parameters(),lr=1e-3)
79
 
 
 
 
80
  def train(dataloader, model, loss_fn, optimizer):
81
  size = len(dataloader.dataset)
82
  num_batches = len(dataloader)
 
85
  correct = 0
86
  for batch, (X,y) in enumerate(dataloader):
87
  X, y = X.to(device), y.to(device)
88
+
 
89
  pred = model(X)
90
  loss = loss_fn(pred,y)
91
+
 
92
  optimizer.zero_grad()
93
  loss.backward()
94
  optimizer.step()
 
96
  _, labels = torch.max(pred.data, 1)
97
  correct += labels.eq(y.data).type(torch.float).sum()
98
 
 
 
 
99
  if batch % 100 == 0:
100
  loss, current = loss.item(), batch * len(X)
101
  print(f"loss: {loss:>7f} [{current:>5d}/{size:>5d}]")
 
105
  print(train_accuracy)
106
  return train_loss,train_accuracy
107
 
 
 
 
 
108
  def test(dataloader, model, loss_fn):
109
  size = len(dataloader.dataset)
110
  num_batches = len(dataloader)
 
123
  test_accuracy = 100*correct
124
  return test_loss, test_accuracy
125
 
 
 
 
 
126
  logname = "/PATH/Normalizer/Experiments_cifar10/logs_normalizer/logs_cifar10.csv"
127
  if not os.path.exists(logname):
128
  with open(logname, 'w') as logfile:
 
130
  logwriter.writerow(['epoch', 'train loss', 'train acc',
131
  'test loss', 'test acc'])
132
 
 
133
  epochs = 100
134
  for epoch in range(epochs):
135
  print(f"Epoch {epoch+1}\n-----------------------------------")
 
141
  test_loss, test_acc])
142
  print("Done!")
143
 
 
 
144
  path = "/PATH/Normalizer/Experiments_cifar10/weights_normalizer"
145
  model_name = "NormalizerImageClassification_cifar10"
146
  torch.save(model.state_dict(), f"{path}/{model_name}.pth")
147
  print(f"Saved Model State to {path}/{model_name}.pth ")