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

Standard Kaczmarz not accepting enforcePositive and enforceReal #80

Closed
jonschumacher opened this issue Mar 21, 2024 · 2 comments
Closed

Comments

@jonschumacher
Copy link
Contributor

Due to the interface changes, the standard Kaczmarz not accepting enforcePositive and enforceReal as keyword arguments anymore. The DAXKazmarz still accepts the keyword arguments and adds the regularizers in

reg = AbstractRegularization[]
if enforcePositive && enforceReal
push!(reg, PositiveRegularization())
elseif enforceReal
push!(reg, RealRegularization())
end
. I would simply go for the same way if it weren't for
error("Kaczmarz does not allow for more than one additional regularization term, found $(length(reg))")
. Thus I am not sure how to fix this issue.

@nHackel
Copy link
Member

nHackel commented Mar 21, 2024

The DAX solvers as well as PrimalDual are not up to date.

The keywords have been removed and instead one has to supply the proximal terms for positivity and real number constraints. Kaczmarz accepts currently an arbitrary number of projection terms so those will not run into that error case.

MPIReco translates the respective enforceX kwargs into the proximal maps during the LeastSquares-process call

@jonschumacher
Copy link
Contributor Author

Thanks for the clarification! For the record: use reg=[L2Regularization(λ), PositiveRegularization()] when creating the solver and it works. I just misunderstood the code.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants