Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve TVNorm implementation #526

Merged
merged 30 commits into from
Jun 3, 2024
Merged

Improve TVNorm implementation #526

merged 30 commits into from
Jun 3, 2024

Conversation

bwohlberg
Copy link
Collaborator

Improve the implementation of scico.functional.TVNorm, recucing memory requirements and computation time.

A number of other minor changes are also included in this PR.

@bwohlberg bwohlberg added the improvement Improvement of existing code, including addressing of omissions or inconsistencies label May 29, 2024
@bwohlberg
Copy link
Collaborator Author

Some timing comparisons. On main:

import scico.numpy as snp
from scico.functional import IsotropicTVNorm
from scico.random import randn

N = 1024
x, key = randn((N, N), seed=123)

TV = IsotropicTVNorm(circular=False, ndims=2, input_shape=x.shape)

y = TV(x)
%timeit TV(x).block_until_ready()
>> 10 ms ± 81.5 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

y = TV.prox(x)
%timeit TV.prox(x).block_until_ready()
>> 88.1 ms ± 1.53 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

On the branch for this PR:

import scico.numpy as snp
from scico.functional import IsotropicTVNorm
from scico.random import randn

N = 1024
x, key = randn((N, N), seed=123)

TV = IsotropicTVNorm(circular=False, axes=None, input_shape=x.shape)

y = TV(x)
%timeit TV(x).block_until_ready()
>> 9.99 ms ± 55 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

y = TV.prox(x)
%timeit TV.prox(x).block_until_ready()
>> 25.8 ms ± 273 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

@bwohlberg bwohlberg merged commit 12d01be into main Jun 3, 2024
18 checks passed
@bwohlberg bwohlberg deleted the brendt/stack-by-axis branch June 3, 2024 20:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
improvement Improvement of existing code, including addressing of omissions or inconsistencies
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants