Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Elvira Clement
slope-screening
Commits
21453995
Commit
21453995
authored
Sep 06, 2021
by
Elvira Clement
Browse files
Modifications experiments
parent
572ba617
Pipeline
#13224
failed with stages
in 4 minutes and 42 seconds
Changes
5
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
experiments/SIAM/xp_2_bench_time/make_figs.sh
deleted
100755 → 0
View file @
572ba617
python viz_paper.py
--id
1a
--precision
8
--noshow
--save
python viz_paper_it.py
--id
1a
--precision
8
--noshow
--save
\ No newline at end of file
experiments/SIAM/xp_2_bench_time/viz_paper_it.py
deleted
100644 → 0
View file @
572ba617
# -*- coding: utf-8 -*-
import
argparse
import
numpy
as
np
import
matplotlib.pyplot
as
plt
from
xps.SIAM.setup
import
Setup
from
process_data
import
process
from
get_algs_params
import
get_alg_params
,
get_nb_algs
from
src.utils
import
gamma_sequence_generator
parser
=
argparse
.
ArgumentParser
()
parser
.
add_argument
(
'--id'
,
help
=
'setup id'
,
type
=
str
)
parser
.
add_argument
(
'--precision'
,
help
=
'stop when gap reaches 1e-precision'
,
default
=
8
)
parser
.
add_argument
(
'--exact'
,
action
=
"store_true"
)
parser
.
add_argument
(
'--noshow'
,
help
=
'show plots'
,
action
=
"store_true"
)
parser
.
add_argument
(
'--save'
,
help
=
'save figure'
,
action
=
"store_true"
)
args
=
parser
.
parse_args
()
# -------------------------
# Load results
# -------------------------
folder
=
f
'results/1e-
{
args
.
precision
}
'
folder
+=
'exact/'
if
args
.
exact
else
'gersh/'
setup
=
Setup
(
args
.
id
)
_
,
list_names
=
get_alg_params
(
setup
,
np
.
zeros
(
5
),
args
.
exact
)
dic_process
=
process
(
folder
,
True
,
setup
)
vec_tau
=
dic_process
[
"vec_tau"
]
results_rho
=
dic_process
[
"results_rho"
]
# -------------------------
# Plot results
# -------------------------
f
,
ax
=
plt
.
subplots
(
1
,
setup
.
nb_dic
,
figsize
=
(
16
,
4.
),
sharex
=
True
,
sharey
=
True
,
gridspec_kw
=
{
'wspace'
:.
05
,
'hspace'
:.
05
}
)
list_algnames
=
[
"PG"
,
"PG$_s$"
,
"PG$_p$"
]
list_dicname
=
[
"Gaussian"
,
"Uniform"
,
"toeplitz"
]
i_lbd
=
1
i_dic
=
0
print
(
"ploting it fig for"
)
print
(
f
" -
{
list_dicname
[
i_dic
]
}
dictionary"
)
print
(
f
" - lbd / lbd_max =
{
setup
.
list_ratio_lbd
[
i_lbd
]
}
"
)
for
i_seq
in
range
(
setup
.
nb_sequence
):
list_colors
=
[
"tab:blue"
,
"tab:orange"
,
"tab:green"
]
for
i_alg
in
range
(
len
(
list_names
)):
ax
[
i_seq
].
plot
(
vec_tau
,
100.
*
results_rho
[
i_alg
,
i_dic
,
i_seq
,
i_lbd
],
linewidth
=
3.
,
label
=
list_algnames
[
i_alg
],
color
=
list_colors
[
i_alg
],
linestyle
=
'-.'
)
ax
[
i_seq
].
set_title
(
f
"OSCAR-
{
i_seq
+
1
}
"
,
fontsize
=
16
)
ax
[
i_seq
].
set_xscale
(
'log'
)
ax
[
i_seq
].
set_xlim
([
5e-15
,
5e-5
])
ax
[
i_seq
].
set_ylim
([
-
2
,
101
])
ax
[
i_seq
].
grid
()
if
i_seq
==
0
:
ax
[
i_seq
].
legend
()
ax
[
i_seq
].
set_xlabel
(
"$
\\
tau$ (Dual gap)"
,
fontsize
=
14
)
if
i_seq
==
0
:
ax
[
i_seq
].
set_ylabel
(
"$
\\
rho_s(
\\
tau)$"
,
fontsize
=
14
)
if
args
.
save
:
fig_name
=
f
"figs/setup
{
args
.
id
}
_it"
plt
.
savefig
(
fig_name
+
".pdf"
,
bbox_inches
=
'tight'
)
if
not
args
.
noshow
:
plt
.
show
()
experiments/SIAM/xp_2_bench_time/
viz_paper
.py
→
experiments/SIAM/xp_2_bench_time/
xp_e_fig
.py
View file @
21453995
File moved
experiments/utils/increasingball.py
0 → 100644
View file @
21453995
import
time
import
numpy
as
np
from
src.utils
import
get_lambda_max
def
test_increasing_ball
(
list_tests
,
vec_offsets
,
slopepb
,
vecx
):
nb_test
=
len
(
list_tests
)
mat_out
=
np
.
zeros
((
nb_test
,
vec_offsets
.
size
))
vecu
,
Atu
,
gap
=
slopepb
.
make_screening_quanties
(
vecx
)
list_time
=
[
0
for
i
in
range
(
nb_test
)]
# Boucle
for
i_offset
,
offset
in
enumerate
(
vec_offsets
):
for
i_test
,
test
in
enumerate
(
list_tests
):
# Test
t_start
=
time
.
time
()
out
=
test
.
apply_test
(
np
.
abs
(
Atu
),
gap
,
slopepb
.
lbd
,
slopepb
.
vec_gammas
,
offset_radius
=
offset
)
list_time
[
i_test
]
+=
time
.
time
()
-
t_start
# save
mat_out
[
i_test
,
i_offset
]
=
np
.
sum
(
out
)
# out
return
mat_out
,
list_time
\ No newline at end of file
experiments/utils/slopepb.py
0 → 100644
View file @
21453995
import
numpy
as
np
from
src.slope
import
primal_func
,
dual_func
from
src.utils
import
get_lambda_max
class
SlopePb
(
object
):
"""docstring for SlopePb"""
def
__init__
(
self
,
matA
,
vecy
,
vec_gammas
,
ratio_lbd
,
lbdmax
=
None
):
super
(
SlopePb
,
self
).
__init__
()
self
.
matA
=
matA
self
.
vecy
=
vecy
self
.
vec_gammas
=
vec_gammas
self
.
ratio_lbd
=
ratio_lbd
if
lbdmax
is
None
:
self
.
lbdmax
=
get_lambda_max
(
vecy
,
matA
,
vec_gammas
)
else
:
self
.
lbdmax
=
lbdmax
self
.
lbd
=
ratio_lbd
*
self
.
lbdmax
def
make_dual_scaling
(
self
,
vecr
):
beta_dual
=
np
.
sort
(
np
.
abs
(
self
.
matA
.
T
@
vecr
))[::
-
1
]
beta_dual
=
np
.
cumsum
(
beta_dual
)
/
\
np
.
cumsum
(
self
.
lbd
*
self
.
vec_gammas
)
return
vecr
/
np
.
max
(
beta_dual
)
def
make_screening_quanties
(
self
,
vecx
):
"""
"""
# residual error
vecu
=
self
.
vecy
-
self
.
matA
@
vecx
# dual scaling
vecu
=
self
.
make_dual_scaling
(
vecu
)
pval
=
primal_func
(
self
.
vecy
,
self
.
matA
@
vecx
,
vecx
,
self
.
lbd
,
self
.
vec_gammas
)
dval
=
dual_func
(
self
.
vecy
,
np
.
linalg
.
norm
(
self
.
vecy
,
2
)
**
2
,
vecu
)
gap
=
np
.
abs
(
pval
-
dval
)
Atu
=
self
.
matA
.
T
@
vecu
return
vecu
,
Atu
,
gap
def
eval_gap
(
self
,
vecx
):
"""
"""
# residual error
vecu
=
self
.
vecy
-
self
.
matA
@
vecx
# dual scaling
vecu
=
self
.
make_dual_scaling
(
vecu
)
pval
=
primal_func
(
self
.
vecy
,
self
.
matA
@
vecx
,
vecx
,
self
.
lbd
,
self
.
vec_gammas
)
dval
=
dual_func
(
self
.
vecy
,
np
.
linalg
.
norm
(
self
.
vecy
,
2
)
**
2
,
vecu
)
return
np
.
abs
(
pval
-
dval
)
\ No newline at end of file
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