From d9c8008bd3483a9aab160ac3f209ef41dd6e0a6f Mon Sep 17 00:00:00 2001 From: pat-alt <altmeyerpat@gmail.com> Date: Wed, 19 Apr 2023 10:49:44 +0200 Subject: [PATCH] :cry: --- notebooks/mnist.qmd | 21 +++++++++++++-------- www/cce_mnist.png | Bin 16062 -> 7586 bytes 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/notebooks/mnist.qmd b/notebooks/mnist.qmd index 25820576..1ad83cf9 100644 --- a/notebooks/mnist.qmd +++ b/notebooks/mnist.qmd @@ -7,7 +7,7 @@ eval(setup_notebooks) ```{julia} # Data: -n_obs = 1000 +n_obs = 10000 counterfactual_data = load_mnist(n_obs) X, y = CounterfactualExplanations.DataPreprocessing.unpack_data(counterfactual_data) X = table(permutedims(X)) @@ -22,15 +22,16 @@ First, let's create a couple of image classifier architectures: ```{julia} # Model parameters: epochs = 100 -batch_size = Int(round(n_obs/10)) +batch_size = minimum([Int(round(n_obs/10)), 100]) n_hidden = 32 -activation = Flux.swish +activation = Flux.relu builder = MLJFlux.@builder Flux.Chain( Dense(n_in, n_hidden), BatchNorm(n_hidden, activation), Dense(n_hidden, n_out), BatchNorm(n_out) ) +# builder = MLJFlux.Short(n_hidden=n_hidden, dropout=0.2, σ=activation) # builder = MLJFlux.MLP( # hidden=( # n_hidden, @@ -39,7 +40,7 @@ builder = MLJFlux.@builder Flux.Chain( # ), # σ=activation # ) -α = [1.0,1.0,1e-1] +α = [1.0,1.0,5e-1] # Simple MLP: mlp = NeuralNetworkClassifier( @@ -58,7 +59,11 @@ jem = JointEnergyClassifier( batch_size=batch_size, finaliser=x -> x, loss=Flux.Losses.logitcrossentropy, - jem_training_params=(α=α,verbosity=10,), + jem_training_params=( + α=α,verbosity=10, + use_gen_loss=false, + use_reg_loss=false, + ), sampling_steps=20, epochs=epochs, ) @@ -106,12 +111,12 @@ println("F1 score (test): $(round(f1,digits=3))") Random.seed!(1234) # Set up search: -factual_label = 2 +factual_label = 9 x = reshape(counterfactual_data.X[:,rand(findall(predict_label(M, counterfactual_data).==factual_label))],input_dim,1) -target = 0 +target = 4 factual = predict_label(M, counterfactual_data, x)[1] γ = 0.5 -T = 100 +T = 1 # Generate counterfactual using generic generator: generator = GenericGenerator() diff --git a/www/cce_mnist.png b/www/cce_mnist.png index 3706287ac1d5a3ee59587e8336bb1e687f5a6286..ea956a80689729139b58966c11514539991a792a 100644 GIT binary patch literal 7586 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 literal 16062 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	w)g zX=!#D<^hDQr(rk-dQ#5kM-!LT?zKpN(V3X|_$aa&2ajEe{+ZNRij_aP$1w=gBtXU1 z1fJK>|8>{s%&{LCZS+~9#9nm7f|T%&2;je^!7YbJr820c%Q+-H;4P0R%BjfaARoW_ Ef7)XdjsO4v -- GitLab