@@ -170,7 +170,6 @@ def flow_based_identifier(self, concept_info,
170
170
exp_features = layers .Conv2D (1 ,1 , name = 'Expectation' )(features )
171
171
model = Model (inputs = self .model .input , outputs = exp_features )
172
172
173
-
174
173
# newmodel = Sequential()
175
174
# newmodel.add(model)
176
175
# newmodel.add()
@@ -180,22 +179,21 @@ def flow_based_identifier(self, concept_info,
180
179
# newmodel.layers[ii].set_weights(self.model.layers[ii].get_weights())
181
180
model .layers [- 1 ].set_weights ((np .ones ((1 , 1 , len (total_filters ), 1 )), np .ones (1 )))
182
181
183
-
184
182
grad = singlelayercam (model , test_img ,
185
183
nclasses = 1 ,
186
184
name = concept_info ['concept_name' ],
187
185
st_layer_idx = - 1 ,
188
- end_layer_idx = 1 ,
186
+ end_layer_idx = - 3 ,
189
187
threshold = 0.5 )
190
188
191
189
if base_grad == True :
192
190
print ("[INFO: BioExp Concept Identification] Base Concept in layer {}" .format (layer_name ))
193
191
else :
194
192
print ("[INFO: BioExp Concept Identification] Identified Concept {} in layer {}" .format (concept_info ['concept_name' ], layer_name ))
195
193
196
- del model , newmodel
194
+ del model
197
195
198
- return grad [ 0 ]
196
+ return grad
199
197
200
198
def flow_based_identifier_no_conv (self , concept_info , save_path , test_img , base_grad = False ):
201
199
@@ -226,7 +224,7 @@ def flow_based_identifier_no_conv(self, concept_info, save_path, test_img, base_
226
224
save_path = save_path ,
227
225
name = concept_info ['concept_name' ],
228
226
st_layer_idx = - 1 ,
229
- end_layer_idx = - 2 ,
227
+ end_layer_idx = - 3 ,
230
228
threshold = 0.5 )
231
229
print ("[INFO: BioExp Concept Identification] Identified Concept {} in layer {}" .format (concept_info ['concept_name' ], layer_name ))
232
230
@@ -237,12 +235,13 @@ def flow_based_identifier_no_conv(self, concept_info, save_path, test_img, base_
237
235
238
236
def _gaussian_sampler_ (self , data , size , ax = - 1 ):
239
237
shape = np .mean (data , ax ).shape + (size ,)
240
- return lambda : np .std (data , - 1 )[..., None ] * np .random .randn (* list (shape )) + np .mean (data , - 1 )[..., None ] # np.random.normal(loc=np.mean(data, axis=ax), scale=np.std(data, axis=ax), size=size)
238
+ return lambda : np .std (data , - 1 )[..., None ] * np .random .randn (* list (shape )) + np .mean (data , - 1 )[..., None ]
239
+ # return lambda: np.random.normal(np.mean(data, -1)[..., None], np.std(data, -1)[..., None], size = size)
241
240
242
241
def _uniform_sampler_ (self , data , size , ax = - 1 ):
243
242
shape = np .mean (data , ax ).shape + (size ,)
244
- print ( np .quantile (data , 0.1 , axis = - 1 )[..., None ]. shape )
245
- return lambda : np .random .uniform (np .quantile (data , 0 , axis = - 1 )[..., None ], np .quantile (data , 1 , axis = - 1 )[..., None ], size = size )
243
+ return lambda : np .quantile (data , 0.1 , axis = - 1 )[..., None ] * np . random . rand ( * list ( shape )) + np . quantile ( data , 0.9 , axis = - 1 )[..., None ]
244
+ # return lambda: np.random.uniform(np.quantile(data, 0.1 , axis=-1)[..., None], np.quantile(data, 0.9 , axis=-1)[..., None], size = size)
246
245
247
246
def concept_distribution (self , concept_info ):
248
247
"""
@@ -329,25 +328,24 @@ def concept_robustness(self, concept_info,
329
328
except : pass
330
329
331
330
self .model .layers [node_idx ].set_weights (occluded_weights )
332
- model = Model (inputs = self .model .input , outputs = self .model .get_layer (concept_info ['layer_name' ]).output )
333
-
334
- newmodel = Sequential ()
335
- newmodel .add (model )
336
- newmodel .add (layers .Conv2D (1 ,1 ))
331
+ features = self .model .get_layer (concept_info ['layer_name' ]).output
332
+ exp_features = layers .Conv2D (1 ,1 , name = 'Expectation' )(features )
333
+ model = Model (inputs = self .model .input , outputs = exp_features )
337
334
338
335
# for ii in range(len(self.model.layers)):
339
336
# newmodel.layers[ii].set_weights(self.model.layers[ii].get_weights())
340
- newmodel .layers [- 1 ].set_weights ((np .ones ((1 , 1 , len (total_filters ), 1 )), np .ones (1 )))
337
+ model .layers [- 1 ].set_weights ((np .ones ((1 , 1 , len (total_filters ), 1 )), np .ones (1 )))
341
338
342
- nclass_grad = singlelayercam (newmodel , test_img ,
339
+ nclass_grad = singlelayercam (model , test_img ,
343
340
nclasses = 1 ,
344
341
name = concept_info ['concept_name' ],
345
342
st_layer_idx = - 1 ,
346
- end_layer_idx = - 2 ,
343
+ end_layer_idx = - 3 ,
347
344
threshold = 0.5 )
348
- gradlist .append (nclass_grad [0 ])
349
345
350
- del model , newmodel
346
+ gradlist .append (nclass_grad )
347
+
348
+ del model
351
349
352
350
# try:
353
351
# del bias_sampler
0 commit comments