Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
NIFTy
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
13
Issues
13
List
Boards
Labels
Service Desk
Milestones
Merge Requests
8
Merge Requests
8
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ift
NIFTy
Commits
2ef525d5
Commit
2ef525d5
authored
Jul 23, 2018
by
Reimar H Leike
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
adapted model test to handle zero gradients without crashing
parent
eb50f9b2
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
6 additions
and
3 deletions
+6
-3
nifty5/extra/energy_and_model_tests.py
nifty5/extra/energy_and_model_tests.py
+6
-3
No files found.
nifty5/extra/energy_and_model_tests.py
View file @
2ef525d5
...
...
@@ -33,7 +33,10 @@ def _get_acceptable_model(M):
raise
ValueError
(
'Initial Model value must be finite'
)
dir
=
from_random
(
"normal"
,
M
.
position
.
domain
)
dirder
=
M
.
jacobian
(
dir
)
dir
=
dir
*
val
*
(
1e-5
/
dirder
.
norm
())
if
dirder
.
norm
()
==
0
:
dir
=
dir
*
val
*
1e-5
else
:
dir
=
dir
*
val
*
(
1e-5
/
dirder
.
norm
())
# Find a step length that leads to a "reasonable" Model
for
i
in
range
(
50
):
try
:
...
...
@@ -88,11 +91,11 @@ def check_value_gradient_consistency(E, tol=1e-8, ntries=100):
numgrad
=
(
E2
.
value
-
val
)
/
dirnorm
if
isinstance
(
E
,
Model
):
xtol
=
tol
*
dirder
.
norm
()
/
np
.
sqrt
(
dirder
.
size
)
if
(
abs
(
numgrad
-
dirder
)
<
xtol
).
all
():
if
(
abs
(
numgrad
-
dirder
)
<
=
xtol
).
all
():
break
else
:
xtol
=
tol
*
Emid
.
gradient_norm
if
abs
(
numgrad
-
dirder
)
<
xtol
:
if
abs
(
numgrad
-
dirder
)
<
=
xtol
:
break
dir
=
dir
*
0.5
dirnorm
*=
0.5
...
...
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