Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reconstruction Error Score? #92

Open
inesws opened this issue Nov 2, 2022 · 2 comments
Open

Reconstruction Error Score? #92

inesws opened this issue Nov 2, 2022 · 2 comments

Comments

@inesws
Copy link

inesws commented Nov 2, 2022

Hi! Thanks for this XAI visualization package!

I am trying to use the saliency method applied to Autoencoders and reconstruction errors.
Also, I do not have images, but a feature array for each observation.
My goal is to check the "importance" of each input feature to the overall reconstruction, thus was trying to use smoothgrad method.

In this case, I do not understand what should I pass to 'score'. The output of the model is just the reconstructed input (n_samples x n_features).

I also couldn't pass a custom function to the score attribute as you suggest in the documentation.
'From the example in the repository:

Instead of using CategoricalScore object,
you can also define the function from scratch as follows:

def score_function(output):
# The output variable refers to the output of the model,
# so, in this case, output shape is (3, 1000) i.e., (samples, classes).
return (output[0][1], output[1][294], output[2][413])
,
But then, how can you pass the function to the method? It needs to be callable, so it gives "ValueError: Score object must be callable! "
Could you add an example explicitly using score_function passed to saliency() (or any other) instance, instead of the instance score from one of the defined score classes (BinaryScore, CategoricalScore) ?

Thank you in advance!

@keisen
Copy link
Owner

keisen commented Nov 8, 2022

Hi, @inesws . I'm sorry I didn't make it clear enough.

You can pass the score_function to saliency() as below:

def score_function(output):
    return (output[0][1], output[1][294], output[2][413])

saliency = Saliency(model)
saliency_map = saliency(score_function, X)

Thanks!

@kallydimitrova
Copy link

Hi, @inesws, did you manage to figure out a custom score function for the autoencoder? I'm facing the same problem right now and so far no luck solving it...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants