Abdullah-Nazhat commited on
Commit
1c79919
·
verified ·
1 Parent(s): efad028

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 tensormapper import TensorMapper
9
 
10
-
11
-
12
  transform = Compose([
13
 
14
  ToTensor(),
@@ -29,28 +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
-
48
  device = "cuda" if torch.cuda.is_available() else "cpu"
49
 
50
  print(f"using {device} device")
51
 
52
-
53
-
54
  class TensorMapperImageClassification(TensorMapper):
55
  def __init__(
56
  self,
@@ -60,8 +51,7 @@ class TensorMapperImageClassification(TensorMapper):
60
  num_classes=10,
61
  d_model = 256,
62
  num_layers=4,
63
-
64
-
65
  ):
66
  super().__init__(d_model, num_layers)
67
  self.patcher = nn.Conv2d(
@@ -83,14 +73,9 @@ class TensorMapperImageClassification(TensorMapper):
83
  model = TensorMapperImageClassification().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 +84,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 +95,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 +104,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 +122,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/Tensor_Mapper/Experiments_cifar10/logs_tensormapper/logs_cifar10.csv"
154
  if not os.path.exists(logname):
155
  with open(logname, 'w') as logfile:
@@ -157,7 +129,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-----------------------------------")
@@ -167,12 +138,10 @@ for epoch in range(epochs):
167
  logwriter = csv.writer(logfile, delimiter=',')
168
  logwriter.writerow([epoch+1, train_loss, train_acc,
169
  test_loss, test_acc])
 
170
  print("Done!")
171
 
172
-
173
-
174
  path = "/PATH/Tensor_Mapper/Experiments_cifar10/weights_tensormapper"
175
  model_name = "TensorMapperImageClassification_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 tensormapper import TensorMapper
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 TensorMapperImageClassification(TensorMapper):
46
  def __init__(
47
  self,
 
51
  num_classes=10,
52
  d_model = 256,
53
  num_layers=4,
54
+
 
55
  ):
56
  super().__init__(d_model, num_layers)
57
  self.patcher = nn.Conv2d(
 
73
  model = TensorMapperImageClassification().to(device)
74
  print(model)
75
 
 
 
76
  loss_fn = nn.CrossEntropyLoss()
77
  optimizer = torch.optim.Adam(model.parameters(),lr=1e-3)
78
 
 
 
 
79
  def train(dataloader, model, loss_fn, optimizer):
80
  size = len(dataloader.dataset)
81
  num_batches = len(dataloader)
 
84
  correct = 0
85
  for batch, (X,y) in enumerate(dataloader):
86
  X, y = X.to(device), y.to(device)
87
+
 
88
  pred = model(X)
89
  loss = loss_fn(pred,y)
90
+
 
91
  optimizer.zero_grad()
92
  loss.backward()
93
  optimizer.step()
 
95
  _, labels = torch.max(pred.data, 1)
96
  correct += labels.eq(y.data).type(torch.float).sum()
97
 
 
 
 
98
  if batch % 100 == 0:
99
  loss, current = loss.item(), batch * len(X)
100
  print(f"loss: {loss:>7f} [{current:>5d}/{size:>5d}]")
 
104
  print(train_accuracy)
105
  return train_loss,train_accuracy
106
 
 
 
 
 
107
  def test(dataloader, model, loss_fn):
108
  size = len(dataloader.dataset)
109
  num_batches = len(dataloader)
 
122
  test_accuracy = 100*correct
123
  return test_loss, test_accuracy
124
 
 
 
 
 
125
  logname = "/PATH/Tensor_Mapper/Experiments_cifar10/logs_tensormapper/logs_cifar10.csv"
126
  if not os.path.exists(logname):
127
  with open(logname, 'w') as logfile:
 
129
  logwriter.writerow(['epoch', 'train loss', 'train acc',
130
  'test loss', 'test acc'])
131
 
 
132
  epochs = 100
133
  for epoch in range(epochs):
134
  print(f"Epoch {epoch+1}\n-----------------------------------")
 
138
  logwriter = csv.writer(logfile, delimiter=',')
139
  logwriter.writerow([epoch+1, train_loss, train_acc,
140
  test_loss, test_acc])
141
+
142
  print("Done!")
143
 
 
 
144
  path = "/PATH/Tensor_Mapper/Experiments_cifar10/weights_tensormapper"
145
  model_name = "TensorMapperImageClassification_cifar10"
146
  torch.save(model.state_dict(), f"{path}/{model_name}.pth")
147
  print(f"Saved Model State to {path}/{model_name}.pth ")