albermax / innvestigate

A toolbox to iNNvestigate neural networks' predictions!
Other
1.25k stars 233 forks source link

meta_mapping() missing 1 required positional argument: 'reverse_state' BRANCH updates_towards_tf2.0 #217

Closed vitorbds closed 2 years ago

vitorbds commented 4 years ago

I am get this error:

TypeError: meta_mapping() missing 1 required positional argument: 'reverse_state'

When i try to analize any image in some of my trained model of VGG16.

But in another models, of VGG16 too, the work fine, with some code and using the same images to analise. Just change, of course, the name of model load....

The only difference between the loaded models is the last FCN layers that I added.

I get this issue with Mobile as well.

Some one can help ??


TypeError Traceback (most recent call last)

in 53 54 ---> 55 a = analyzer.analyze(x) 56 a = np.array(a) 57 plt.rcParams["figure.figsize"] = (20,10) ~/ExplainAI/innvestigate-updates_towards_tf2.0/innvestigate_/analyzer/base.py in analyze(self, X, neuron_selection, layer_names) 304 #TODO: check X, neuron_selection, and layer_selection for validity 305 if not hasattr(self, "_analyzer_model"): --> 306 self.create_analyzer_model() 307 inp, all = self._analyzer_model 308 ret = reverse_map.apply_reverse_map(X, inp, all, neuron_selection=neuron_selection, layer_names=layer_names) ~/ExplainAI/innvestigate-updates_towards_tf2.0/innvestigate_/analyzer/base.py in create_analyzer_model(self) 278 """ 279 --> 280 self._analyzer_model = self._create_analysis(self._model) 281 282 def _create_analysis(self, model, stop_analysis_at_tensors=[]): ~/ExplainAI/innvestigate-updates_towards_tf2.0/innvestigate_/analyzer/relevance_based/relevance_analyzer.py in _create_analysis(self, *args, **kwargs) 249 250 # FINALIZED constructor. --> 251 return super(LRP, self)._create_analysis(*args, **kwargs) 252 253 def _default_reverse_mapping(self, layer): ~/ExplainAI/innvestigate-updates_towards_tf2.0/innvestigate_/analyzer/base.py in _create_analysis(self, model, stop_analysis_at_tensors) 413 reverse_mappings=self._reverse_mapping, 414 default_reverse_mapping=self._default_reverse_mapping, --> 415 stop_mapping_at_tensors=stop_analysis_at_tensors, 416 ) 417 ~/ExplainAI/innvestigate-updates_towards_tf2.0/innvestigate_/analyzer/reverse_map.py in reverse_map(model, reverse_mappings, default_reverse_mapping, stop_mapping_at_tensors) 357 if not layer.name in stop_mapping_at_tensors: 358 layer_next = [] --> 359 wrapper_class = reverse_mappings(layer) 360 if wrapper_class is None: 361 wrapper_class = default_reverse_mapping(layer) ~/ExplainAI/innvestigate-updates_towards_tf2.0/innvestigate_/analyzer/base.py in _reverse_mapping(self, layer) 352 """ 353 --> 354 return self._apply_conditional_reverse_mappings(layer) 355 356 def _add_conditional_reverse_mapping( ~/ExplainAI/innvestigate-updates_towards_tf2.0/innvestigate_/analyzer/base.py in _apply_conditional_reverse_mappings(self, layer) 398 return mapping["mapping"] 399 elif callable(mapping["mapping"]): --> 400 return mapping["mapping"](layer) 401 402 return None TypeError: meta_mapping() missing 1 required positional argument: 'reverse_state'
vitorbds commented 4 years ago

I would u like to add that information: the models of VGG that did not works have dropout and batch_normalization in last layers.

The version of VGG that works fine just have FCN in last layers.

Is that a conceptual limitation of LRP ?

adrhill commented 2 years ago

Hi @vitorbds,

we just released iNNvestigate 2.0 with support for TensorFlow 2! Please try it out and let me know if this fixes your issue. :)