a-ragab-h-m commited on
Commit
0888538
·
verified ·
1 Parent(s): d986879

Update run.py

Browse files
Files changed (1) hide show
  1. run.py +14 -46
run.py CHANGED
@@ -9,8 +9,7 @@ from torch.utils.data import DataLoader
9
  import json
10
 
11
  dir_path = os.path.dirname(os.path.realpath(__file__))
12
- q = os.path.join(dir_path, '..')
13
- sys.path.append(q)
14
 
15
  from nets.model import Model
16
  from Actor.actor import Actor
@@ -21,32 +20,16 @@ from google_solver.google_model import evaluate_google_model
21
  with open('params.json', 'r') as f:
22
  params = json.load(f)
23
 
 
 
 
 
24
  # Settings
25
  device = params['device']
26
  run_tests = params['run_tests']
27
  save_results = params['save_results']
28
  dataset_path = params['dataset_path']
29
 
30
- # Create results directory
31
- now = datetime.now()
32
- dt_string = now.strftime("%d-%m-%y %H-%M-%S")
33
- print('Current time: ' + dt_string + '\n')
34
-
35
- if save_results:
36
- results_dir = os.path.join(os.getcwd() , "results")
37
- os.makedirs(results_dir, exist_ok=True)
38
-
39
- experiment_path = os.path.join(results_dir, dt_string)
40
- os.makedirs(experiment_path, exist_ok=True)
41
- open(os.path.join(experiment_path, 'train_results.txt'), 'w').close()
42
- open(os.path.join(experiment_path, 'test_results.txt'), 'w').close()
43
-
44
- with open(os.path.join(experiment_path, 'params.json'), 'w') as f:
45
- json.dump(params, f)
46
-
47
- os.mkdir(os.path.join(experiment_path, 'problem_instances'))
48
-
49
-
50
  # Dataset sizes
51
  train_dataset_size = params['train_dataset_size']
52
  validation_dataset_size = params['validation_dataset_size']
@@ -81,26 +64,14 @@ tot_google_scores = google_scores.sum().item()
81
  input_size = validation_dataset.model_input_length()
82
 
83
  # Models
84
- model = Model(
85
- input_size=input_size,
86
- embedding_size=embedding_size,
87
- decoder_input_size=params["decoder_input_size"]
88
- )
89
- actor = Actor(model=model, num_movers=num_movers,
90
- num_neighbors_encoder=num_neighbors_encoder,
91
- num_neighbors_action=num_neighbors_action,
92
- device=device, normalize=False)
93
  actor.train_mode()
94
 
95
- baseline_model = Model(
96
- input_size=input_size,
97
- embedding_size=embedding_size,
98
- decoder_input_size=params["decoder_input_size"]
99
- )
100
- baseline_actor = Actor(model=baseline_model, num_movers=num_movers,
101
- num_neighbors_encoder=num_neighbors_encoder,
102
- num_neighbors_action=num_neighbors_action,
103
- device=device, normalize=False)
104
  baseline_actor.greedy_search()
105
  baseline_actor.load_state_dict(actor.state_dict())
106
 
@@ -151,7 +122,7 @@ for epoch in range(params['num_epochs']):
151
  result = f"{epoch}, {i}, {actor_nn_ratio:.4f}, {actor_baseline_ratio:.4f}, {train_batch_record:.4f}"
152
  print(result, flush=True)
153
  if save_results:
154
- with open(os.path.join(experiment_path, 'train_results.txt'), 'a') as f:
155
  f.write(result + '\n')
156
  del batch
157
 
@@ -196,12 +167,9 @@ for epoch in range(params['num_epochs']):
196
  ratio = tot_cost / tot_nn_cost
197
  validation_record = min(validation_record, ratio)
198
 
199
- if save_results:
200
- torch.save(actor.state_dict(), os.path.join(experiment_path, 'model_state_dict.pt'))
201
- torch.save(optimizer.state_dict(), os.path.join(experiment_path, 'optimizer_state_dict.pt'))
202
-
203
  actor_google_ratio = tot_cost / tot_google_scores
204
  print(f"\nTest results:\nActor/Google: {actor_google_ratio:.4f}, Actor/NN: {ratio:.4f}, Best NN Ratio: {validation_record:.4f}\n")
 
205
  if save_results:
206
- with open(os.path.join(experiment_path, 'test_results.txt'), 'a') as f:
207
  f.write(f"{epoch}, {actor_google_ratio:.4f}, {ratio:.4f}, {validation_record:.4f}\n")
 
9
  import json
10
 
11
  dir_path = os.path.dirname(os.path.realpath(__file__))
12
+ sys.path.append(os.path.join(dir_path, '..'))
 
13
 
14
  from nets.model import Model
15
  from Actor.actor import Actor
 
20
  with open('params.json', 'r') as f:
21
  params = json.load(f)
22
 
23
+ # Save params into a local file for tracking
24
+ with open('params_saved.json', 'w') as f:
25
+ json.dump(params, f)
26
+
27
  # Settings
28
  device = params['device']
29
  run_tests = params['run_tests']
30
  save_results = params['save_results']
31
  dataset_path = params['dataset_path']
32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  # Dataset sizes
34
  train_dataset_size = params['train_dataset_size']
35
  validation_dataset_size = params['validation_dataset_size']
 
64
  input_size = validation_dataset.model_input_length()
65
 
66
  # Models
67
+ model = Model(input_size=input_size, embedding_size=embedding_size, decoder_input_size=params["decoder_input_size"])
68
+ actor = Actor(model=model, num_movers=num_movers, num_neighbors_encoder=num_neighbors_encoder,
69
+ num_neighbors_action=num_neighbors_action, device=device, normalize=False)
 
 
 
 
 
 
70
  actor.train_mode()
71
 
72
+ baseline_model = Model(input_size=input_size, embedding_size=embedding_size, decoder_input_size=params["decoder_input_size"])
73
+ baseline_actor = Actor(model=baseline_model, num_movers=num_movers, num_neighbors_encoder=num_neighbors_encoder,
74
+ num_neighbors_action=num_neighbors_action, device=device, normalize=False)
 
 
 
 
 
 
75
  baseline_actor.greedy_search()
76
  baseline_actor.load_state_dict(actor.state_dict())
77
 
 
122
  result = f"{epoch}, {i}, {actor_nn_ratio:.4f}, {actor_baseline_ratio:.4f}, {train_batch_record:.4f}"
123
  print(result, flush=True)
124
  if save_results:
125
+ with open('train_results.txt', 'a') as f:
126
  f.write(result + '\n')
127
  del batch
128
 
 
167
  ratio = tot_cost / tot_nn_cost
168
  validation_record = min(validation_record, ratio)
169
 
 
 
 
 
170
  actor_google_ratio = tot_cost / tot_google_scores
171
  print(f"\nTest results:\nActor/Google: {actor_google_ratio:.4f}, Actor/NN: {ratio:.4f}, Best NN Ratio: {validation_record:.4f}\n")
172
+
173
  if save_results:
174
+ with open('test_results.txt', 'a') as f:
175
  f.write(f"{epoch}, {actor_google_ratio:.4f}, {ratio:.4f}, {validation_record:.4f}\n")