-
Notifications
You must be signed in to change notification settings - Fork 4
/
populate_mesonet.py
124 lines (98 loc) · 4.9 KB
/
populate_mesonet.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import datajoint as dj
import numpy as np
from cnn_sys_ident.mesonet.parameters import Fit, RegPath, Model, Core, Readout
from cnn_sys_ident.mesonet.data import MultiDataset
from cnn_sys_ident.mesonet import MODELS
'''
RegPath().populate(reserve_jobs=True)
""" Main model selection using
- three layer rotation-equivariant net
- filter sizes: 13, 5, 5
- positive readout weights
- sparse readout weights
- no shared biases across rotations
"""
data_key = dict(data_hash='cfcd208495d565ef66e7dff9f98764da')
model_rel = MODELS['HermiteSparse'] * MultiDataset() & data_key & \
'shared_biases=False AND positive_feature_weights=True'
Fit().populate(model_rel, reserve_jobs=True, suppress_errors=True, order='random')
""" Ablation experiments """
n = (Fit() * model_rel).fetch('num_filters_2', order_by='val_loss', limit=1)[0]
num_filters = 'num_filters_2={:d}'.format(n)
# No sparsity on feature weights
model_rel = MODELS['HermiteDense'] & \
'shared_biases=False AND positive_feature_weights=True' & num_filters
Fit().populate(model_rel, reserve_jobs=True, suppress_errors=True, order='random')
# No positivity constraint on feature weights
model_rel = MODELS['HermiteSparse'] & \
'shared_biases=False AND positive_feature_weights=False' & num_filters
Fit().populate(model_rel, reserve_jobs=True, suppress_errors=True, order='random')
# Shared biases across rotations
model_rel = MODELS['HermiteSparse'] & \
'shared_biases=True AND positive_feature_weights=True' & num_filters
Fit().populate(model_rel, reserve_jobs=True, suppress_errors=True, order='random')
# Regular CNN
model_rel = MODELS['CNNSparse'] & 'positive_feature_weights=True'
Fit().populate(model_rel, reserve_jobs=True, suppress_errors=True, order='random')
'''
'''
data_key = dict(data_hash='cfcd208495d565ef66e7dff9f98764da')
# for k in [48, 32]:
for k in [16]:
num_filters = 'num_filters_2 = {:d}'.format(k)
# No sparsity on feature weights
model_rel = MODELS['HermiteDense'] * MultiDataset() & data_key & \
'shared_biases=False AND positive_feature_weights=False' & num_filters
Fit().populate(model_rel, reserve_jobs=True, suppress_errors=True, order='random')
# No positivity constraint on feature weights
model_rel = MODELS['HermiteSparse'] * MultiDataset() & data_key & \
'shared_biases=False AND positive_feature_weights=False' & num_filters
Fit().populate(model_rel, reserve_jobs=True, suppress_errors=True, order='random')
# Shared biases across rotations
model_rel = MODELS['HermiteSparse'] * MultiDataset() & data_key & \
'shared_biases=True AND positive_feature_weights=False' & num_filters
Fit().populate(model_rel, reserve_jobs=True, suppress_errors=True, order='random')
# Regular CNN
data_key = dict(data_hash='cfcd208495d565ef66e7dff9f98764da')
n = [128, 128, 256]
key = {'num_filters_{:d}'.format(i): n[i] for i in range(len(n))}
model_rel = MODELS['CNNSparse'] * MultiDataset() & data_key \
& 'positive_feature_weights=False' & key
Fit().populate(model_rel, reserve_jobs=True, suppress_errors=True, order='random')
RegPath().populate(reserve_jobs=True)
data_key = dict(data_hash='cfcd208495d565ef66e7dff9f98764da')
for k in [8, 16, 32, 12, 24, 40, 10, 14, 20, 28]:
num_filters = 'num_filters_2 = {:d}'.format(k)
model_rel = MODELS['HermiteSparse'] * MultiDataset() \
& data_key & num_filters \
& 'shared_biases=False AND positive_feature_weights=False'
Fit().populate(model_rel, reserve_jobs=True, suppress_errors=True, order='random')
'''
'''
data_key = dict(data_hash='cfcd208495d565ef66e7dff9f98764da')
model_rel = MODELS['HermiteTransfer'] * MultiDataset() & data_key
Fit().populate(model_rel, reserve_jobs=True, suppress_errors=True, order='random')
'''
'''
# Control with L2 on feature weights, applied separately from L1 on masks
data_key = dict(data_hash='cfcd208495d565ef66e7dff9f98764da')
model_rel = MODELS['HermiteSparseSeparate'] * MultiDataset() & data_key & 'num_filters_2=16 AND shared_biases=False'
Fit().populate(model_rel, reserve_jobs=True, suppress_errors=True, order='random')
'''
'''
# Control with data split in two halves
from cnn_sys_ident.mesonet.controls import FitDataSplit
data_key = dict(data_hash='cfcd208495d565ef66e7dff9f98764da')
model_rel = MODELS['HermiteSparse'] * MultiDataset() & data_key & 'num_filters_2=16 AND shared_biases=False'
FitDataSplit().populate(model_rel, reserve_jobs=True, suppress_errors=True, order='random')
'''
'''
from cnn_sys_ident.mesonet.controls import FitDataSplit, MEI
unit_ids = np.load('analysis/paper/figures/unit_ids.npy')
keys = [dict(unit_id=id) for id in unit_ids.flatten()]
MEI.populate(keys, reserve_jobs=True, suppress_errors=True, order='random')
'''
from cnn_sys_ident.mesonet.vis import MEI
unit_ids = np.load('analysis/paper/figures/unit_ids.npy')
keys = [dict(unit_id=id) for id in unit_ids.flatten()]
MEI.populate(keys, 'reg_seed=1954773306', reserve_jobs=True, suppress_errors=True, order='random')