From 399d655b8ab35d09585404adb6a1b0aec13a6eca Mon Sep 17 00:00:00 2001 From: Hossein Pourbozorg Date: Fri, 13 Jan 2023 23:41:37 +0330 Subject: [PATCH] move example to a file (#110) --- README.md | 42 +------------------------------------- examples/simple_example.jl | 37 +++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 41 deletions(-) create mode 100644 examples/simple_example.jl diff --git a/README.md b/README.md index 4c41be28..8ce1e8d8 100644 --- a/README.md +++ b/README.md @@ -29,44 +29,4 @@ using Pkg Pkg.add(url="https://github.com/impICNF/ICNF.jl") ``` -To use this package, here is an example: - -```julia -using ICNF -using Distributions, Flux -using DifferentialEquations, SciMLSensitivity - -# Parameters -nvars = 1 -n = 1024 - -# Data -data_dist = Beta(2.0, 4.0) -r = rand(data_dist, nvars, n) - -# Model -nn = Chain( - Dense(nvars => 4*nvars, tanh), - Dense(4*nvars => nvars, tanh), -) |> f64 -icnf = RNODE{Float64, Array}(nn, nvars; tspan=(0.0, 4.0)) - -# Training -using DataFrames, MLJBase -df = DataFrame(transpose(r), :auto) -model = ICNFModel(icnf; opt_app=SciMLOptApp()) -mach = machine(model, df) -fit!(mach) - -# Use It -d = ICNFDist(icnf) -actual_pdf = pdf.(data_dist, vec(r)) -estimated_pdf = pdf(d, r) -new_data = rand(d, n) - -# Evaluation -using LinearAlgebra, Distances -n1 = norm(estimated_pdf - actual_pdf, 1) / n -n2 = norm(estimated_pdf - actual_pdf, 2) / n -tv_dis = totalvariation(estimated_pdf, actual_pdf) / n -``` +See [`simple_example.jl`](examples/simple_example.jl) for a simple example of using this package. diff --git a/examples/simple_example.jl b/examples/simple_example.jl new file mode 100644 index 00000000..b1a3ebec --- /dev/null +++ b/examples/simple_example.jl @@ -0,0 +1,37 @@ +using ICNF +using Distributions, Flux +using DifferentialEquations, SciMLSensitivity + +# Parameters +nvars = 1 +n = 1024 + +# Data +data_dist = Beta(2.0, 4.0) +r = rand(data_dist, nvars, n) + +# Model +nn = Chain( + Dense(nvars => 4*nvars, tanh), + Dense(4*nvars => nvars, tanh), +) |> f64 +icnf = RNODE{Float64, Array}(nn, nvars; tspan=(0.0, 4.0)) + +# Training +using DataFrames, MLJBase +df = DataFrame(transpose(r), :auto) +model = ICNFModel(icnf; opt_app=SciMLOptApp()) +mach = machine(model, df) +fit!(mach) + +# Use It +d = ICNFDist(icnf) +actual_pdf = pdf.(data_dist, vec(r)) +estimated_pdf = pdf(d, r) +new_data = rand(d, n) + +# Evaluation +using LinearAlgebra, Distances +n1 = norm(estimated_pdf - actual_pdf, 1) / n +n2 = norm(estimated_pdf - actual_pdf, 2) / n +tv_dis = totalvariation(estimated_pdf, actual_pdf) / n