Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ift
NIFTy
Commits
537a2d3d
Commit
537a2d3d
authored
Oct 02, 2017
by
Martin Reinecke
Browse files
restructure iteration controllers to match those in nightly branch
parent
0d71c455
Pipeline
#19122
canceled with stage
Changes
11
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
demos/critical_filtering.py
View file @
537a2d3d
...
...
@@ -88,11 +88,11 @@ if __name__ == "__main__":
d_data
=
d
.
val
.
real
ift
.
plotting
.
plot
(
d
.
real
,
name
=
"data.pdf"
)
IC1
=
ift
.
DefaultIteration
Controller
(
verbose
=
True
,
iteration_limit
=
100
,
tol_abs_gradnorm
=
0.1
)
IC1
=
ift
.
GradientNorm
Controller
(
verbose
=
True
,
iteration_limit
=
100
,
tol_abs_gradnorm
=
0.1
)
minimizer1
=
ift
.
RelaxedNewton
(
IC1
)
IC2
=
ift
.
DefaultIteration
Controller
(
verbose
=
True
,
iteration_limit
=
100
,
tol_abs_gradnorm
=
0.1
)
IC2
=
ift
.
GradientNorm
Controller
(
verbose
=
True
,
iteration_limit
=
100
,
tol_abs_gradnorm
=
0.1
)
minimizer2
=
ift
.
VL_BFGS
(
IC2
,
max_history_length
=
20
)
IC3
=
ift
.
DefaultIteration
Controller
(
verbose
=
True
,
iteration_limit
=
100
,
tol_abs_gradnorm
=
0.1
)
IC3
=
ift
.
GradientNorm
Controller
(
verbose
=
True
,
iteration_limit
=
100
,
tol_abs_gradnorm
=
0.1
)
minimizer3
=
ift
.
SteepestDescent
(
IC3
)
# Set starting position
...
...
@@ -107,14 +107,14 @@ if __name__ == "__main__":
S0
=
ift
.
create_power_operator
(
h_space
,
power_spectrum
=
ps0
)
# Initialize non-linear Wiener Filter energy
ICI
=
ift
.
DefaultIteration
Controller
(
verbose
=
False
,
iteration_limit
=
500
,
tol_abs_gradnorm
=
0.1
)
ICI
=
ift
.
GradientNorm
Controller
(
verbose
=
False
,
iteration_limit
=
500
,
tol_abs_gradnorm
=
0.1
)
map_inverter
=
ift
.
ConjugateGradient
(
controller
=
ICI
)
map_energy
=
ift
.
library
.
WienerFilterEnergy
(
position
=
m0
,
d
=
d
,
R
=
R
,
N
=
N
,
S
=
S0
,
inverter
=
map_inverter
)
# Solve the Wiener Filter analytically
D0
=
map_energy
.
curvature
m0
=
D0
.
inverse_times
(
j
)
# Initialize power energy with updated parameters
ICI2
=
ift
.
DefaultIteration
Controller
(
name
=
"powI"
,
verbose
=
True
,
iteration_limit
=
200
,
tol_abs_gradnorm
=
1e-5
)
ICI2
=
ift
.
GradientNorm
Controller
(
name
=
"powI"
,
verbose
=
True
,
iteration_limit
=
200
,
tol_abs_gradnorm
=
1e-5
)
power_inverter
=
ift
.
ConjugateGradient
(
controller
=
ICI2
)
power_energy
=
ift
.
library
.
CriticalPowerEnergy
(
position
=
t0
,
m
=
m0
,
D
=
D0
,
smoothness_prior
=
10.
,
samples
=
3
,
inverter
=
power_inverter
)
...
...
demos/log_normal_wiener_filter.py
View file @
537a2d3d
...
...
@@ -46,8 +46,8 @@ if __name__ == "__main__":
# Wiener filter
m0
=
ift
.
Field
(
harmonic_space
,
val
=
0.
)
ctrl
=
ift
.
DefaultIteration
Controller
(
verbose
=
False
,
tol_abs_gradnorm
=
1
)
ctrl2
=
ift
.
DefaultIteration
Controller
(
verbose
=
True
,
tol_abs_gradnorm
=
0.1
,
name
=
"outer"
)
ctrl
=
ift
.
GradientNorm
Controller
(
verbose
=
False
,
tol_abs_gradnorm
=
1
)
ctrl2
=
ift
.
GradientNorm
Controller
(
verbose
=
True
,
tol_abs_gradnorm
=
0.1
,
name
=
"outer"
)
inverter
=
ift
.
ConjugateGradient
(
controller
=
ctrl
)
energy
=
ift
.
library
.
LogNormalWienerFilterEnergy
(
m0
,
data
,
R_harmonic
,
N
,
S
,
inverter
=
inverter
)
minimizer1
=
ift
.
VL_BFGS
(
controller
=
ctrl2
,
max_history_length
=
20
)
...
...
demos/paper_demos/cartesian_wiener_filter.py
View file @
537a2d3d
...
...
@@ -90,7 +90,7 @@ if __name__ == "__main__":
# Wiener filter
j
=
R_harmonic
.
adjoint_times
(
N
.
inverse_times
(
data
))
ctrl
=
ift
.
DefaultIteration
Controller
(
verbose
=
True
,
iteration_limit
=
100
)
ctrl
=
ift
.
GradientNorm
Controller
(
verbose
=
True
,
iteration_limit
=
100
)
inverter
=
ift
.
ConjugateGradient
(
controller
=
ctrl
)
wiener_curvature
=
ift
.
library
.
WienerFilterCurvature
(
S
=
S
,
N
=
N
,
R
=
R_harmonic
,
inverter
=
inverter
)
...
...
demos/paper_demos/wiener_filter.py
View file @
537a2d3d
...
...
@@ -45,7 +45,7 @@ if __name__ == "__main__":
# Wiener filter
j
=
R_harmonic
.
adjoint_times
(
N
.
inverse_times
(
data
))
ctrl
=
ift
.
DefaultIteration
Controller
(
verbose
=
True
,
tol_abs_gradnorm
=
0.1
,
iteration_limit
=
10
)
ctrl
=
ift
.
GradientNorm
Controller
(
verbose
=
True
,
tol_abs_gradnorm
=
0.1
,
iteration_limit
=
10
)
inverter
=
ift
.
ConjugateGradient
(
controller
=
ctrl
)
wiener_curvature
=
ift
.
library
.
WienerFilterCurvature
(
S
=
S
,
N
=
N
,
R
=
R_harmonic
,
inverter
=
inverter
)
m_k
=
wiener_curvature
.
inverse_times
(
j
)
#|\label{code:wf_wiener_filter}|
...
...
demos/wiener_filter_via_curvature.py
View file @
537a2d3d
...
...
@@ -58,7 +58,7 @@ if __name__ == "__main__":
# Wiener filter
j
=
R_harmonic
.
adjoint_times
(
N
.
inverse_times
(
data
))
ctrl
=
ift
.
DefaultIteration
Controller
(
verbose
=
True
,
tol_abs_gradnorm
=
1e-2
)
ctrl
=
ift
.
GradientNorm
Controller
(
verbose
=
True
,
tol_abs_gradnorm
=
1e-2
)
inverter
=
ift
.
ConjugateGradient
(
controller
=
ctrl
)
wiener_curvature
=
ift
.
library
.
WienerFilterCurvature
(
S
=
S
,
N
=
N
,
R
=
R_harmonic
,
inverter
=
inverter
)
...
...
demos/wiener_filter_via_hamiltonian.py
View file @
537a2d3d
...
...
@@ -75,7 +75,7 @@ if __name__ == "__main__":
# Choosing the minimization strategy
ctrl
=
ift
.
DefaultIteration
Controller
(
verbose
=
True
,
tol_abs_gradnorm
=
0.1
)
ctrl
=
ift
.
GradientNorm
Controller
(
verbose
=
True
,
tol_abs_gradnorm
=
0.1
)
inverter
=
ift
.
ConjugateGradient
(
controller
=
ctrl
)
# Setting starting position
m0
=
ift
.
Field
(
h_space
,
val
=
.
0
)
...
...
nifty/minimization/__init__.py
View file @
537a2d3d
...
...
@@ -17,8 +17,7 @@
# and financially supported by the Studienstiftung des deutschen Volkes.
from
.line_searching
import
*
from
.iteration_controller
import
IterationController
from
.default_iteration_controller
import
DefaultIterationController
from
.iteration_controlling
import
*
from
.minimizer
import
Minimizer
from
.conjugate_gradient
import
ConjugateGradient
from
.nonlinear_cg
import
NonlinearCG
...
...
nifty/minimization/iteration_controlling/__init__.py
0 → 100644
View file @
537a2d3d
from
.iteration_controller
import
IterationController
from
.gradient_norm_controller
import
GradientNormController
nifty/minimization/
default_
iteration_controller.py
→
nifty/minimization/iteration_
controlling/gradient_norm_
controller.py
View file @
537a2d3d
...
...
@@ -20,11 +20,11 @@ from __future__ import print_function
from
.iteration_controller
import
IterationController
class
DefaultIteration
Controller
(
IterationController
):
class
GradientNorm
Controller
(
IterationController
):
def
__init__
(
self
,
tol_abs_gradnorm
=
None
,
tol_rel_gradnorm
=
None
,
convergence_level
=
1
,
iteration_limit
=
None
,
name
=
None
,
verbose
=
None
):
super
(
DefaultIteration
Controller
,
self
).
__init__
()
super
(
GradientNorm
Controller
,
self
).
__init__
()
self
.
_tol_abs_gradnorm
=
tol_abs_gradnorm
self
.
_tol_rel_gradnorm
=
tol_rel_gradnorm
self
.
_convergence_level
=
convergence_level
...
...
nifty/minimization/iteration_controller.py
→
nifty/minimization/iteration_
controlling/iteration_
controller.py
View file @
537a2d3d
...
...
@@ -18,7 +18,7 @@
from
builtins
import
range
import
abc
from
..nifty_meta
import
NiftyMeta
from
..
.
nifty_meta
import
NiftyMeta
from
future.utils
import
with_metaclass
...
...
test/test_minimization/test_minimizers.py
View file @
537a2d3d
...
...
@@ -24,7 +24,7 @@ class Test_Minimizers(unittest.TestCase):
covariance
=
ift
.
DiagonalOperator
(
space
,
diagonal
=
covariance_diagonal
)
required_result
=
ift
.
Field
(
space
,
val
=
1.
)
IC
=
ift
.
DefaultIteration
Controller
(
tol_abs_gradnorm
=
1e-5
)
IC
=
ift
.
GradientNorm
Controller
(
tol_abs_gradnorm
=
1e-5
)
minimizer
=
minimizer_class
(
controller
=
IC
)
energy
=
ift
.
QuadraticEnergy
(
A
=
covariance
,
b
=
required_result
,
position
=
starting_point
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment