tv_probe_transpose_derivatives_from_sweep ========================================= .. py:function:: t3toolbox.backend.sampling_derivatives.tv_probe_transpose_derivatives_from_sweep(ztildes, ww, pp, frame, sweep, order, sum_over_probes = False, chunk_size = 100) .. code-block:: python def tv_probe_transpose_derivatives_from_sweep( ztildes: typ.Sequence[NDArray], # residual jets, len=d, elm_shape=(order+1,)+W+K+C+(Ni,) ww: typ.Sequence[NDArray], # probe vectors X, len=d, elm_shape=W+(Ni,) pp: typ.Sequence[NDArray], # perturbation vectors P, len=d, elm_shape=W+(Ni,) frame: typ.Tuple[ typ.Sequence[NDArray], typ.Sequence[NDArray], typ.Sequence[NDArray], typ.Sequence[NDArray], ], # = T3Frame.data = (U, O, P, Q) sweep: typ.Tuple[ typ.Sequence[NDArray], typ.Sequence[NDArray], typ.Sequence[NDArray], typ.Sequence[NDArray], ], # = tv_precompute_probe_frame_sweep_jets(frame, ww, pp, order) order: int, # highest derivative order K sum_over_probes: bool = False, # True: sum the sample stack W (the J^T r back-projection) chunk_size: typ.Optional[int] = 100, # W-chunk size for the gradient assembly; None -> dense. docs/chunking.md ) -> typ.Tuple[ typ.Tuple[NDArray, ...], # dU_tildes (Tucker variation gradient) typ.Tuple[NDArray, ...], # dG_tildes (TT variation gradient) ]: # = T3Variations.data Variation gradient of :py:func:`tv_probe_derivatives_transpose` from a precomputed frame ``sweep``: the adjoint sweeps (``sigma/tau/dxi_tilde`` jets) + the order-less gradient assembly, reusing the frame ``(xi, mu, nu, eta)_jets``. The reuse hook for a fitting inner solve.