From 07135cd4d733212df9a7059eb14527722bf68b1a Mon Sep 17 00:00:00 2001
From: pat-alt <altmeyerpat@gmail.com>
Date: Tue, 18 Apr 2023 21:06:06 +0200
Subject: [PATCH] shoot me

---
 notebooks/mnist.qmd |  47 ++++++++++++++++++++++++++++++--------------
 src/model.jl        |   6 +++++-
 www/cce_mnist.png   | Bin 14802 -> 16062 bytes
 3 files changed, 37 insertions(+), 16 deletions(-)

diff --git a/notebooks/mnist.qmd b/notebooks/mnist.qmd
index 433e3ba3..25820576 100644
--- a/notebooks/mnist.qmd
+++ b/notebooks/mnist.qmd
@@ -25,8 +25,21 @@ epochs = 100
 batch_size = Int(round(n_obs/10))
 n_hidden = 32
 activation = Flux.swish
-builder = MLJFlux.MLP(hidden=(n_hidden,), σ=activation)
-α = [0.33,1.0,1e-1]
+builder = MLJFlux.@builder Flux.Chain(
+    Dense(n_in, n_hidden),
+    BatchNorm(n_hidden, activation),
+    Dense(n_hidden, n_out),
+    BatchNorm(n_out)
+)
+# builder = MLJFlux.MLP(
+#     hidden=(
+#         n_hidden,
+#         n_hidden,
+#         n_hidden,
+#     ), 
+#     σ=activation
+# )
+α = [1.0,1.0,1e-1]
 
 # Simple MLP:
 mlp = NeuralNetworkClassifier(
@@ -36,17 +49,18 @@ mlp = NeuralNetworkClassifier(
 )
 
 # Joint Energy Model:
-𝒟x = Uniform(-1,1)
+𝒟x = Uniform(0,1)
 𝒟y = Categorical(ones(output_dim) ./ output_dim)
 sampler = ConditionalSampler(𝒟x, 𝒟y, input_size=(input_dim,), batch_size=batch_size)
 jem = JointEnergyClassifier(
     sampler;
     builder=builder,
     batch_size=batch_size,
-    finaliser=Flux.softmax,
-    loss=Flux.Losses.crossentropy,
+    finaliser=x -> x,
+    loss=Flux.Losses.logitcrossentropy,
     jem_training_params=(α=α,verbosity=10,),
     sampling_steps=20,
+    epochs=epochs,
 )
 
 # Deep Ensemble:
@@ -54,8 +68,8 @@ mlp_ens = EnsembleModel(model=mlp, n=5)
 ```
 
 ```{julia}
-cov = .9
-conf_model = conformal_model(jem; method=:adaptive_inductive, coverage=cov)
+cov = .90
+conf_model = conformal_model(jem; method=:simple_inductive, coverage=cov)
 mach = machine(conf_model, X, labels)
 fit!(mach)
 M = CCE.ConformalModel(mach.model, mach.fitresult)
@@ -63,7 +77,7 @@ M = CCE.ConformalModel(mach.model, mach.fitresult)
 
 ```{julia}
 jem = mach.model.model.jem
-n_iter = 5000
+n_iter = 100
 _w = 1500
 plts = []
 neach = 10
@@ -78,7 +92,8 @@ for i in 1:10
     plt = Plots.plot(plts_i..., size=(_w,0.10*_w), layout=(1,10))
     plts = [plts..., plt]
 end
-Plots.plot(plts..., size=(_w,_w), layout=(10,1))
+plt = Plots.plot(plts..., size=(_w,_w), layout=(10,1))
+display(plt)
 ```
 
 ```{julia}
@@ -88,12 +103,14 @@ println("F1 score (test): $(round(f1,digits=3))")
 ```
 
 ```{julia}
+Random.seed!(1234)
+
 # Set up search:
-factual_label = 9
+factual_label = 2
 x = reshape(counterfactual_data.X[:,rand(findall(predict_label(M, counterfactual_data).==factual_label))],input_dim,1)
-target = 4
+target = 0
 factual = predict_label(M, counterfactual_data, x)[1]
-γ = 0.9
+γ = 0.5
 T = 100
 
 # Generate counterfactual using generic generator:
@@ -106,9 +123,9 @@ ce_wachter = generate_counterfactual(
 
 # Generate counterfactual using CCE generator:
 generator = CCEGenerator(
-    λ=[0.0,10.0], 
-    temp=0.01, 
-    # opt=CounterfactualExplanations.Generators.JSMADescent(η=0.5),
+    λ=[0.0,1.0], 
+    temp=0.5, 
+    # opt=CounterfactualExplanations.Generators.JSMADescent(η=1.0),
 )
 ce_conformal = generate_counterfactual(
     x, target, counterfactual_data, M, generator; 
diff --git a/src/model.jl b/src/model.jl
index 2d3ec05d..c724867b 100644
--- a/src/model.jl
+++ b/src/model.jl
@@ -86,7 +86,11 @@ function Models.logits(M::ConformalModel, X::AbstractArray)
             p̂ = [p̂]
         end
         p̂ = reduce(hcat, p̂)
-        ŷ = reduce(hcat, (map(p -> log.(p) .+ log(sum(exp.(p))), eachcol(p̂))))
+        if all(0.0 .<= vec(p̂) .<= 1.0)
+            ŷ = reduce(hcat, (map(p -> log.(p) .+ log(sum(exp.(p))), eachcol(p̂))))
+        else
+            ŷ = p̂
+        end
         if M.likelihood == :classification_binary
             ŷ = reduce(hcat, (map(y -> y[2] - y[1], eachcol(ŷ))))
         end
diff --git a/www/cce_mnist.png b/www/cce_mnist.png
index 8af78f6df7b2364c9d6883f4b5dea1046c1ac173..3706287ac1d5a3ee59587e8336bb1e687f5a6286 100644
GIT binary patch
literal 16062
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
Ef7)XdjsO4v

literal 14802
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

-- 
GitLab