Source code for monalisa.optim._back_gradient
"""Port of src/optim/bmBackGradient.m."""
import numpy as np
from monalisa._mat import vec
from monalisa.optim._back_gradient_n import back_gradient_n
[docs]
def back_gradient(x, n_u, dX_u):
"""Backward-difference gradient ``[prod(n_u), imDim]`` (complex single)."""
n_u = vec(n_u)
g = np.zeros((int(np.prod(n_u)), n_u.size), dtype=np.complex64, order="F")
for n in range(n_u.size):
g[:, n] = back_gradient_n(x, n_u, dX_u, n + 1)[:, 0]
return g