as_scipy_functional
- odl.as_scipy_functional(func, return_gradient=False)
Wrap
opas a function operating on linear arrays.This is intended to be used with the scipy solvers.
Parameters
- func
Functional. A functional that should be wrapped
- return_gradientbool, optional
Trueif the gradient of the functional should also be returned,Falseotherwise.
Returns
- function
callable The wrapped functional.
- gradient
callable, optional The wrapped gradient. Only returned if
return_gradientis true.
Examples
Wrap functional and solve simple problem (here toy problem
min_x ||x||^2):>>> func = odl.functionals.L2NormSquared(odl.rn(3)) >>> scipy_func = odl.as_scipy_functional(func) >>> from scipy.optimize import minimize >>> result = minimize(scipy_func, x0=[0, 1, 0]) >>> np.allclose(result.x, [0, 0, 0]) True
The gradient (jacobian) can also be provided:
>>> func = odl.functionals.L2NormSquared(odl.rn(3)) >>> scipy_func, scipy_grad = odl.as_scipy_functional(func, True) >>> from scipy.optimize import minimize >>> result = minimize(scipy_func, x0=[0, 1, 0], jac=scipy_grad) >>> np.allclose(result.x, [0, 0, 0]) True
Notes
If the data representation of
op’s domain is of typeNumpyTensorSpace, this incurs no significant overhead. If the space type isCudaFnor some other nonlocal type, the overhead is significant.- func