In this tutorial we cover the linear operators, proxable functions, and solver algorithms available.

Linear Operators

  • Variable(shape): Creates a variable object.
  • conv(kernel, arg): Convolves arg with kernel.
  • subsample(arg, steps): Extracts every steps[i] pixel along axis i, starting with pixel steps[i]-1.
  • mul_elemwise(weight, arg): Element-wise multiplication with a fixed constant weight array.
  • scale(rho, arg): Scale arg by scalar constant rho.
  • sum([arg1, arg2, ...]): Sums list of input expressions into a single linear expression.
  • vstack([e1, e2, ...]): Vectorizes and stacks a list of input expressions into a single linear expression.
  • grad(arg, dims): Computes the gradients of arg across the specified dims, by default across all of its dimensions.
  • warp(arg, H): Interprets arg as a 2D image and warps it using the homography H with linear interpolation.
  • mul_color(arg, C): Performs a blockwise 3x3 color transform using the color matrix C, or the predefined opponent (C="opp") and YUV (C="yuv") color spaces.
  • resize(arg, shape): Casts arg to the given shape.

Proxable Functions

  • sum_squares(lin_op): The squared L2 norm.
  • norm1(lin_op): The L1 norm.
  • group_norm1(lin_op, dims): The sum of the L2 norm taken across the given dims.
  • poisson_norm(lin_op, b): The maximum-likelihood denoiser for Poisson noise with observations b.
  • patch_NLM(lin_op): A prior based on the nonlocal means denoising algorithm.
  • nonneg(lin_op): A nonnegativity prior.
  • sum_entries(lin_op): Sums over the linear operator.
  • diff_fn(lin_op, func, fprime, bounds=None): A generic differentiable function with evaluation oracle func, gradient oracle fprime, and box constraints given by bounds.

Solver Algorithms

Specify the solver algorithm via prob.solve(solver=algorithm key). The algorithm keys are given below.

  • 'pc': The Pock-Chambolle algorithm.
  • 'admm': The alternating directions method of multipliers (ADMM) algorithm.
  • 'ladmm': The linearized ADMM algorithm.
  • 'hqs': The half-quadratic splitting algorithm.

All algorithms support the solve method arguments

  • max_iters to set the maximum number of iterations.
  • eps_abs and eps_rel to set the desired precision.
  • verbose to set whether or not to print debugging information.
  • x0 to set the initial value of the variable in the algorithm.