diff --git a/demos/basic_usage.jl b/demos/basic_usage.jl index 9f6f654..927f1a2 100644 --- a/demos/basic_usage.jl +++ b/demos/basic_usage.jl @@ -1,3 +1,5 @@ +using Revise + using ExpFamilyPCA @@ -7,7 +9,7 @@ X = rand(0:1, n_samples, n_dims) # generate random binary data n_components = 2 epca = BernoulliPCA(n_components, n_dims) -fit!(epca, X; verbose=true, maxiter=30) +fit!(epca, X; verbose=true, maxiter=5) X̃ = compress(epca, X) X_recon = decompress(epca, X̃) \ No newline at end of file diff --git a/demos/bernoulli_benchmark.ipynb b/demos/bernoulli_benchmark.ipynb index 0c23628..3c2f5b8 100644 --- a/demos/bernoulli_benchmark.ipynb +++ b/demos/bernoulli_benchmark.ipynb @@ -55,7 +55,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Julia 1.10.1", + "display_name": "Julia 1.10.2", "language": "julia", "name": "julia-1.10" }, @@ -63,7 +63,7 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.10.1" + "version": "1.10.2" } }, "nbformat": 4, diff --git a/demos/kl_benchmark.ipynb b/demos/kl_benchmark.ipynb new file mode 100644 index 0000000..5e39097 --- /dev/null +++ b/demos/kl_benchmark.ipynb @@ -0,0 +1,81 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[32m\u001b[1m No Changes\u001b[22m\u001b[39m to `~/VSCodeProjects/BeliefCompression/ExpFamilyPCA/Project.toml`\n", + "\u001b[32m\u001b[1m Updating\u001b[22m\u001b[39m `~/VSCodeProjects/BeliefCompression/ExpFamilyPCA/Manifest.toml`\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \u001b[90m[7d9fca2a] \u001b[39m\u001b[92m+ Arpack v0.5.4\u001b[39m\n", + " \u001b[90m[6f286f6a] \u001b[39m\u001b[92m+ MultivariateStats v0.10.2\u001b[39m\n", + " \u001b[90m[08074719] \u001b[39m\u001b[91m- POMDPModelTools v0.3.13\u001b[39m\n", + " \u001b[90m[e0d0a172] \u001b[39m\u001b[91m- POMDPSimulators v0.3.14\u001b[39m\n", + "\u001b[33m⌅\u001b[39m \u001b[90m[68821587] \u001b[39m\u001b[92m+ Arpack_jll v3.5.1+1\u001b[39m\n", + "\u001b[36m\u001b[1m Info\u001b[22m\u001b[39m Packages marked with \u001b[33m⌅\u001b[39m have new versions available but compatibility constraints restrict them from upgrading. To see why use `status --outdated -m`\n" + ] + } + ], + "source": [ + "using Pkg\n", + "# Pkg.develop(\"CompressedBeliefMDPs\")\n", + "# Pkg.develop(\"ExpFamilyPCA\")\n", + "Pkg.resolve()\n", + "\n", + "using CompressedBeliefMDPs\n", + "using ExpFamilyPCA\n", + "\n", + "using POMDPs\n", + "using POMDPModels\n", + "using POMDPTools" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "ename": "UndefVarError", + "evalue": "UndefVarError: `TMaze` not defined", + "output_type": "error", + "traceback": [ + "UndefVarError: `TMaze` not defined\n", + "\n", + "Stacktrace:\n", + " [1] top-level scope\n", + " @ ~/VSCodeProjects/BeliefCompression/ExpFamilyPCA/demos/kl_benchmark.ipynb:1" + ] + } + ], + "source": [ + "pomdp = TMaze(50, 0.99)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Julia 1.10.2", + "language": "julia", + "name": "julia-1.10" + }, + "language_info": { + "file_extension": ".jl", + "mimetype": "application/julia", + "name": "julia", + "version": "1.10.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/demos/poisson_benchmark.ipynb b/demos/poisson_benchmark.ipynb index 9622ae0..35eea61 100644 --- a/demos/poisson_benchmark.ipynb +++ b/demos/poisson_benchmark.ipynb @@ -483,7 +483,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Julia 1.10.1", + "display_name": "Julia 1.10.2", "language": "julia", "name": "julia-1.10" }, @@ -491,7 +491,7 @@ "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.10.1" + "version": "1.10.2" } }, "nbformat": 4, diff --git a/src/ExpFamilyPCA.jl b/src/ExpFamilyPCA.jl index c8c2127..15da8e2 100644 --- a/src/ExpFamilyPCA.jl +++ b/src/ExpFamilyPCA.jl @@ -25,5 +25,9 @@ export BernoulliPCA include("bernoulli.jl") +export + GaussianPCA +include("gaussian.jl") + end # module ExpFamilyPCA diff --git a/src/gaussian.jl b/src/gaussian.jl new file mode 100644 index 0000000..d505460 --- /dev/null +++ b/src/gaussian.jl @@ -0,0 +1,8 @@ +function GaussianPCA(l::Integer, d::Integer; μ0::Real=0) + @. begin + g(θ) = θ + Bregman(p, q) = (p - q)^2 / 2 + end + epca = EPCA(l, d, g, Bregman, μ0) + return epca +end \ No newline at end of file