Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 7bca348

Browse files
committed
restructuring experiment loop code
1 parent 4c93322 commit 7bca348

File tree

4 files changed

+89
-42
lines changed

4 files changed

+89
-42
lines changed

learning2learn/util.py

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -112,44 +112,6 @@ def evaluate_generalization(model, X, layer_num, batch_size=32):
112112

113113
return gen_scores
114114

115-
def experiment_loop(
116-
exectue_fn, category_trials, exemplar_trials, params, results_path
117-
):
118-
stdout = sys.stdout
119-
# Create results_path folder. Remove previous one if it already exists.
120-
if os.path.isdir(results_path):
121-
warnings.warn('Removing old results folder of the same name!')
122-
shutil.rmtree(results_path)
123-
os.mkdir(results_path)
124-
np.save(os.path.join(results_path, 'category_trials.npy'),
125-
np.asarray(category_trials))
126-
np.save(os.path.join(results_path, 'exemplar_trials.npy'),
127-
np.asarray(exemplar_trials))
128-
# Loop through different values of (nb_categories, nb_exemplars)
129-
results_O1 = np.zeros(
130-
shape=(len(category_trials), len(exemplar_trials), params['nb_runs'])
131-
)
132-
results_O2 = np.zeros(
133-
shape=(len(category_trials), len(exemplar_trials), params['nb_runs'])
134-
)
135-
for i, nb_categories in enumerate(category_trials):
136-
for j, nb_exemplars in enumerate(exemplar_trials):
137-
print('Testing for %i categories and %i exemplars...' %
138-
(nb_categories, nb_exemplars))
139-
log_file = os.path.join(results_path,
140-
'log_ca%0.4i_ex%0.4i' %
141-
(nb_categories, nb_exemplars))
142-
sys.stdout = open(log_file,'w')
143-
results_O1[i, j], results_O2[i, j] = \
144-
exectue_fn(nb_categories, nb_exemplars, params)
145-
sys.stdout = stdout
146-
# Save results from this run to text file
147-
save_file_gen = os.path.join(results_path, 'results_O1.npy')
148-
np.save(save_file_gen, results_O1)
149-
save_file_gen = os.path.join(results_path, 'results_O2.npy')
150-
np.save(save_file_gen, results_O2)
151-
print('Experiment loop complete.')
152-
153115
def train_model(
154116
model, X_train, Y_train, epochs, validation_data, batch_size,
155117
checkpoint, burn_period=20

scripts/cnn_loop.py

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,52 @@
11
from __future__ import division, print_function
2+
import os
3+
import sys
4+
import shutil
5+
import warnings
26
import argparse
7+
import numpy as np
38
import tensorflow as tf
49

5-
from learning2learn.util import experiment_loop
610
from cnn_train_one import run_experiment
711

12+
def experiment_loop(
13+
category_trials, exemplar_trials, params, results_path
14+
):
15+
stdout = sys.stdout
16+
# Create results_path folder. Remove previous one if it already exists.
17+
if os.path.isdir(results_path):
18+
warnings.warn('Removing old results folder of the same name!')
19+
shutil.rmtree(results_path)
20+
os.mkdir(results_path)
21+
np.save(os.path.join(results_path, 'category_trials.npy'),
22+
np.asarray(category_trials))
23+
np.save(os.path.join(results_path, 'exemplar_trials.npy'),
24+
np.asarray(exemplar_trials))
25+
# Loop through different values of (nb_categories, nb_exemplars)
26+
results_O1 = np.zeros(
27+
shape=(len(category_trials), len(exemplar_trials), params['nb_runs'])
28+
)
29+
results_O2 = np.zeros(
30+
shape=(len(category_trials), len(exemplar_trials), params['nb_runs'])
31+
)
32+
for i, nb_categories in enumerate(category_trials):
33+
for j, nb_exemplars in enumerate(exemplar_trials):
34+
print('Testing for %i categories and %i exemplars...' %
35+
(nb_categories, nb_exemplars))
36+
log_file = os.path.join(results_path,
37+
'log_ca%0.4i_ex%0.4i' %
38+
(nb_categories, nb_exemplars))
39+
sys.stdout = open(log_file,'w')
40+
results_O1[i, j], results_O2[i, j] = \
41+
run_experiment(nb_categories, nb_exemplars, params)
42+
sys.stdout = stdout
43+
# Save results from this run to text file
44+
save_file_gen = os.path.join(results_path, 'results_O1.npy')
45+
np.save(save_file_gen, results_O1)
46+
save_file_gen = os.path.join(results_path, 'results_O2.npy')
47+
np.save(save_file_gen, results_O2)
48+
print('Experiment loop complete.')
49+
850
def main():
951
# GPU settings
1052
if args.gpu_num is not None:
@@ -25,7 +67,7 @@ def main():
2567
category_trials = [2, 4, 8, 16, 32, 50]
2668
exemplar_trials = [3, 6, 9, 12, 15, 18]
2769
experiment_loop(
28-
run_experiment, category_trials=category_trials,
70+
category_trials=category_trials,
2971
exemplar_trials=exemplar_trials, params=params,
3072
results_path=args.save_path
3173
)

scripts/cnn_loop_color.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ def experiment_loop(category_trials, exemplar_trials, params, results_path):
3535
'log_ca%0.4i_ex%0.4i' %
3636
(nb_categories, nb_exemplars))
3737
sys.stdout = open(log_file,'w')
38+
# Here we will indicate 'color' as the attribute by which labels
39+
# should be assigned
3840
results_O1[i, j], results_O2[i, j] = \
3941
run_experiment(nb_categories, nb_exemplars, params, 'color')
4042
sys.stdout = stdout

scripts/mlp_loop.py

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,50 @@
11
from __future__ import division, print_function
2+
import os
3+
import sys
4+
import shutil
5+
import warnings
26
import argparse
7+
import numpy as np
38

4-
from learning2learn.util import experiment_loop
59
from mlp_train_one import run_experiment
610

11+
def experiment_loop(
12+
category_trials, exemplar_trials, params, results_path
13+
):
14+
stdout = sys.stdout
15+
# Create results_path folder. Remove previous one if it already exists.
16+
if os.path.isdir(results_path):
17+
warnings.warn('Removing old results folder of the same name!')
18+
shutil.rmtree(results_path)
19+
os.mkdir(results_path)
20+
np.save(os.path.join(results_path, 'category_trials.npy'),
21+
np.asarray(category_trials))
22+
np.save(os.path.join(results_path, 'exemplar_trials.npy'),
23+
np.asarray(exemplar_trials))
24+
# Loop through different values of (nb_categories, nb_exemplars)
25+
results_O1 = np.zeros(
26+
shape=(len(category_trials), len(exemplar_trials), params['nb_runs'])
27+
)
28+
results_O2 = np.zeros(
29+
shape=(len(category_trials), len(exemplar_trials), params['nb_runs'])
30+
)
31+
for i, nb_categories in enumerate(category_trials):
32+
for j, nb_exemplars in enumerate(exemplar_trials):
33+
print('Testing for %i categories and %i exemplars...' %
34+
(nb_categories, nb_exemplars))
35+
log_file = os.path.join(results_path,
36+
'log_ca%0.4i_ex%0.4i' %
37+
(nb_categories, nb_exemplars))
38+
sys.stdout = open(log_file,'w')
39+
results_O1[i, j], results_O2[i, j] = \
40+
run_experiment(nb_categories, nb_exemplars, params)
41+
sys.stdout = stdout
42+
# Save results from this run to text file
43+
save_file_gen = os.path.join(results_path, 'results_O1.npy')
44+
np.save(save_file_gen, results_O1)
45+
save_file_gen = os.path.join(results_path, 'results_O2.npy')
46+
np.save(save_file_gen, results_O2)
47+
print('Experiment loop complete.')
748

849
def main():
950
# Create the experiment parameter dictionary
@@ -17,7 +58,7 @@ def main():
1758
category_trials = [2, 4, 8, 16, 32, 50]
1859
exemplar_trials = [3, 6, 9, 12, 15, 18]
1960
experiment_loop(
20-
run_experiment, category_trials=category_trials,
61+
category_trials=category_trials,
2162
exemplar_trials=exemplar_trials, params=params,
2263
results_path=args.save_path
2364
)

0 commit comments

Comments
 (0)