3
3
import os
4
4
import glob
5
5
import copy
6
+ import math
6
7
import types
7
8
import logging
8
9
import tempfile
18
19
19
20
datasets_pfx = '/nfs/research/uhlmann/afoix/datasets/image_datasets'
20
21
datasets = [
21
- # ("synthetic_shapes", f"{datasets_pfx}/synthetic_shapes/", "mask")
22
+ ("synthetic_shapes" , f"{ datasets_pfx } /synthetic_shapes/" , "mask" , 1579 )
22
23
# ("tiny_synthcell", f"{datasets_pfx}/tiny_synthcellshapes_dataset/", "mask")
23
24
# ("vampire", f"{datasets_pfx}/vampire/torchvision/Control/", "mask")
24
- ("mefs_cells" , f"{ datasets_pfx } /mefs_single_object_cell/" , "mask" )
25
- # ("vampire_nuclei", f"{datasets_pfx}/vampire_nuclei/", "mask")
26
- # , ("binary_vampire", f"{datasets_pfx}/binary_vampire/", "mask")
27
- # , ("bbbc010", f"{datasets_pfx}/bbbc010/BBBC010_v1_foreground_eachworm/", "mask")
25
+ , ("mefs_cells" , f"{ datasets_pfx } /mefs_single_object_cell/" , "mask" , 83 )
26
+ , ("vampire_nuclei" , f"{ datasets_pfx } /vampire_nuclei/" , "mask" , 23 )
27
+ , ("binary_vampire" , f"{ datasets_pfx } /binary_vampire/" , "mask" , 291 )
28
+ , ("bbbc010" , f"{ datasets_pfx } /bbbc010/BBBC010_v1_foreground_eachworm/" , "mask" , 323 )
28
29
#, ("synthcell", f"{datasets_pfx}/synthcellshapes_dataset/", "mask")
29
- # , ("helakyoto", f"{datasets_pfx}/H2b_10x_MD_exp665/samples/", "mask")
30
+ , ("helakyoto" , f"{ datasets_pfx } /H2b_10x_MD_exp665/samples/" , "mask" , 61 )
30
31
#, ("allen", f"{datasets_pfx}/allen_dataset/", "mask")
31
32
]
32
33
33
34
models = [
34
35
"resnet18_vqvae"
35
36
#, "resnet50_vqvae"
36
- #, "resnet18_vae"
37
+ # "resnet18_vae"
37
38
#, "resnet50_vae"
38
- , "resnet18_beta_vae"
39
+ # , "resnet18_beta_vae"
39
40
#, "resnet50_beta_vae"
40
41
#, "resnet18_vae_bolt"
41
42
#, "resnet50_vae_bolt"
50
51
51
52
model_params = {
52
53
#"resnet18_beta_vae": {'beta': [2,5]}
53
- "resnet18_beta_vae" : {'beta' : [0.0001 ]}
54
+ # "resnet18_beta_vae": {'beta': [0.01 ]}
54
55
#, "resnet50_beta_vae": {'beta': [2,5]}
55
- , "resnet50_beta_vae" : {'beta' : [0.00001 ]}
56
+ # , "resnet50_beta_vae": {'beta': [0.00001]}
56
57
}
57
58
58
- compression_factors = [1 , 2 , 3 , 5 , 10 ]
59
+ compression_factors = [2 , 3 ]
59
60
60
- batch_sizes = [4 , 8 , 16 ]
61
+ batch_sizes = [4 ]
61
62
62
63
# XXX XXX XXX XXX XXX XXX XXX #
63
64
# XXX ad-hoc one-off config XXX #
71
72
72
73
def gen_params_sweep_list ():
73
74
p_sweep_list = []
75
+ def dm_sizes (mode , n = 3 ):
76
+ n = n // 2 # number of sizes to consider below and above
77
+ p = math .ceil (math .log2 (mode ))
78
+ return [2 ** i for i in range (p - n , p + n + 1 )]
74
79
for params in [ { 'dataset' : types .SimpleNamespace (name = ds [0 ], path = ds [1 ], type = ds [2 ])
75
80
, 'model_name' : m
76
81
, 'compression_factor' : cf
77
- , 'latent_dim' : compressed_n_features (512 , cf )
82
+ , 'distance_matrix_size' : dm_sz
83
+ , 'latent_dim' : compressed_n_features (dm_sz , cf )
78
84
, 'batch_size' : bs
79
85
} for ds in datasets
80
86
for m in models
87
+ for dm_sz in dm_sizes (ds [3 ]) # 4th tuple element (ds[3]) is the dataset contour size mode (most repeated value)
81
88
for cf in compression_factors
82
89
for bs in batch_sizes ]:
83
90
# per model params:
@@ -121,7 +128,7 @@ def find_submitted_slurm_jobs():
121
128
dflt_out_dir = f'{ os .getcwd ()} /output_results_{ datetime .datetime .now ().strftime ("%Y%m%d_%H%M%S" )} '
122
129
123
130
slurm_time = '50:00:00'
124
- slurm_mem = '80G '
131
+ slurm_mem = '100G '
125
132
slurm_gpus = 'a100:1'
126
133
127
134
shapeembed_script = f'{ os .getcwd ()} /shapeembed.py'
@@ -142,6 +149,7 @@ def spawn_slurm_job(slurm_out_dir, out_dir, ps, logger=logging.getLogger(__name_
142
149
]
143
150
cmd += [ '--dataset' , ps .dataset .name , ps .dataset .path , ps .dataset .type
144
151
, '--model' , ps .model_name
152
+ , '--distance-matrix-size' , ps .distance_matrix_size
145
153
, '--compression-factor' , ps .compression_factor
146
154
, '--batch-size' , ps .batch_size
147
155
]
0 commit comments