Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
N
NIFTy
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Monitor
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
ift
NIFTy
Commits
10e967de
Commit
10e967de
authored
4 years ago
by
Philipp Frank
Committed by
Philipp Arras
4 years ago
Browse files
Options
Downloads
Patches
Plain Diff
Update demo
parent
21f0128d
Branches
Branches containing commit
Tags
Tags containing commit
1 merge request
!626
Add Geometric KL
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
demos/getting_started_3.py
+20
-14
20 additions, 14 deletions
demos/getting_started_3.py
with
20 additions
and
14 deletions
demos/getting_started_3.py
+
20
−
14
View file @
10e967de
...
...
@@ -31,6 +31,7 @@ import numpy as np
import
nifty7
as
ift
ift
.
random
.
push_sseq_from_seed
(
27
)
def
random_los
(
n_los
):
starts
=
list
(
ift
.
random
.
current_rng
().
random
((
n_los
,
2
)).
T
)
...
...
@@ -63,16 +64,16 @@ def main():
'
offset_std
'
:
(
1e-3
,
1e-6
),
# Amplitude of field fluctuations
'
fluctuations
'
:
(
2
.
,
1.
),
# 1.0, 1e-2
'
fluctuations
'
:
(
1
.
,
0.8
),
# 1.0, 1e-2
# Exponent of power law power spectrum component
'
loglogavgslope
'
:
(
-
4
.
,
1
),
# -6.0, 1
'
loglogavgslope
'
:
(
-
3
.
,
1
),
# -6.0, 1
# Amplitude of integrated Wiener process power spectrum component
'
flexibility
'
:
(
5
,
2
.
),
#
2
.0,
1.0
'
flexibility
'
:
(
2
,
1
.
),
#
1
.0,
0.5
# How ragged the integrated Wiener process component is
'
asperity
'
:
(
0.5
,
0.
5
)
# 0.1, 0.5
'
asperity
'
:
(
0.5
,
0.
4
)
# 0.1, 0.5
}
correlated_field
=
ift
.
SimpleCorrelatedField
(
position_space
,
**
args
)
...
...
@@ -89,7 +90,6 @@ def main():
# Specify noise
data_space
=
R
.
target
noise
=
.
001
sig
=
ift
.
ScalingOperator
(
data_space
,
np
.
sqrt
(
noise
))
N
=
ift
.
ScalingOperator
(
data_space
,
noise
)
# Generate mock signal and data
...
...
@@ -102,6 +102,9 @@ def main():
ic_newton
=
ift
.
AbsDeltaEnergyController
(
name
=
'
Newton
'
,
deltaE
=
0.5
,
iteration_limit
=
35
)
minimizer
=
ift
.
NewtonCG
(
ic_newton
)
ic_sampling_nl
=
ift
.
AbsDeltaEnergyController
(
name
=
'
Sampling
'
,
deltaE
=
0.5
,
iteration_limit
=
15
,
convergence_level
=
2
)
minimizer_sampling
=
ift
.
NewtonCG
(
ic_sampling_nl
)
# Set up likelihood and information Hamiltonian
likelihood
=
(
ift
.
GaussianEnergy
(
mean
=
data
,
inverse_covariance
=
N
.
inverse
)
@
...
...
@@ -112,18 +115,21 @@ def main():
mean
=
initial_mean
plot
=
ift
.
Plot
()
plot
.
add
(
signal
(
mock_position
),
title
=
'
Ground Truth
'
)
plot
.
add
(
signal
(
mock_position
),
title
=
'
Ground Truth
'
,
zmin
=
0
,
zmax
=
1
)
plot
.
add
(
R
.
adjoint_times
(
data
),
title
=
'
Data
'
)
plot
.
add
([
pspec
.
force
(
mock_position
)],
title
=
'
Power Spectrum
'
)
plot
.
output
(
ny
=
1
,
nx
=
3
,
xsize
=
24
,
ysize
=
6
,
name
=
filename
.
format
(
"
setup
"
))
# number of samples used to estimate the KL
N_samples
=
2
0
N_samples
=
1
0
# Draw new samples to approximate the KL five times
for
i
in
range
(
5
):
# Draw new samples to approximate the KL six times
for
i
in
range
(
6
):
if
i
==
5
:
# Double the number of samples in the last step for better statistics
N_samples
=
2
*
N_samples
# Draw new samples and minimize KL
KL
=
ift
.
Metric
Gaussian
KL
(
mean
,
H
,
N_samples
,
True
)
KL
=
ift
.
Geo
MetricKL
(
mean
,
H
,
N_samples
,
minimizer_sampling
,
True
)
KL
,
convergence
=
minimizer
(
KL
)
mean
=
KL
.
position
ift
.
extra
.
minisanity
(
data
,
lambda
x
:
N
.
inverse
,
signal_response
,
...
...
@@ -131,7 +137,7 @@ def main():
# Plot current reconstruction
plot
=
ift
.
Plot
()
plot
.
add
(
signal
(
KL
.
position
),
title
=
"
Latent mean
"
)
plot
.
add
(
signal
(
KL
.
position
),
title
=
"
Latent mean
"
,
zmin
=
0
,
zmax
=
1
)
plot
.
add
([
pspec
.
force
(
KL
.
position
+
ss
)
for
ss
in
KL
.
samples
],
title
=
"
Samples power spectrum
"
)
plot
.
output
(
ny
=
1
,
ysize
=
6
,
xsize
=
16
,
...
...
@@ -144,16 +150,16 @@ def main():
# Plotting
filename_res
=
filename
.
format
(
"
results
"
)
plot
=
ift
.
Plot
()
plot
.
add
(
sc
.
mean
,
title
=
"
Posterior Mean
"
)
plot
.
add
(
sc
.
mean
,
title
=
"
Posterior Mean
"
,
zmin
=
0
,
zmax
=
1
)
plot
.
add
(
ift
.
sqrt
(
sc
.
var
),
title
=
"
Posterior Standard Deviation
"
)
powers
=
[
pspec
.
force
(
s
+
KL
.
position
)
for
s
in
KL
.
samples
]
sc
=
ift
.
StatCalculator
()
for
pp
in
powers
:
sc
.
add
(
pp
)
sc
.
add
(
pp
.
log
()
)
plot
.
add
(
powers
+
[
pspec
.
force
(
mock_position
),
pspec
.
force
(
KL
.
position
),
sc
.
mean
],
pspec
.
force
(
KL
.
position
),
sc
.
mean
.
exp
()
],
title
=
"
Sampled Posterior Power Spectrum
"
,
linewidth
=
[
1.
]
*
len
(
powers
)
+
[
3.
,
3.
,
3.
],
label
=
[
None
]
*
len
(
powers
)
+
[
'
Ground truth
'
,
'
Posterior latent mean
'
,
'
Posterior mean
'
])
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment