tv_apply_jacobian_from_sweep#
- t3toolbox.backend.apply.tv_apply_jacobian_from_sweep(variation, ww, frame, frame_sweep)#
def tv_apply_jacobian_from_sweep( variation: typ.Tuple[ typ.Sequence[NDArray], # var_tucker_cores. len=d, elm_shape=K+C+(nOi,Ni) typ.Sequence[NDArray], # var_tt_cores. len=d, elm_shape=K+C+(rLi,nUi,rRi) ], ww: typ.Sequence[NDArray], # apply vectors, len=d, elm_shape=W+(Ni,) -- for the variation's dxis frame: typ.Tuple[ typ.Sequence[NDArray], # up_tucker_cores U. len=d (unused; for a uniform call signature) typ.Sequence[NDArray], # down_tt_cores O. len=d typ.Sequence[NDArray], # left_tt_cores P. len=d (unused) typ.Sequence[NDArray], # right_tt_cores Q. len=d ], # frame order = T3Frame.data = (up, down, left, right) frame_sweep: typ.Tuple[ typ.Sequence[NDArray], # xis typ.Sequence[NDArray], # mus ], # = tv_precompute_apply_frame_sweep(frame, ww) (lean) ) -> NDArray: # the scalar apply(v, ww), one per stack element; shape = W + K + C
Forward all-modes apply of a tangent vector reusing a precomputed frame sweep – the bare
𝒥with the frame edge variables injected. Equivalent totv_apply(), but it takes the lean(xis, mus)fromframe_sweepinstead of recomputing them (the reuse hook forfitting.py). Only the variation-dependentdxisis computed here. No gauge projectorΠ.See also
- Parameters:
variation (t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Sequence[NDArray], t3toolbox.backend.common.typ.Sequence[NDArray]])
ww (t3toolbox.backend.common.typ.Sequence[NDArray])
frame (t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Sequence[NDArray], t3toolbox.backend.common.typ.Sequence[NDArray], t3toolbox.backend.common.typ.Sequence[NDArray], t3toolbox.backend.common.typ.Sequence[NDArray]])
frame_sweep (t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Sequence[NDArray], t3toolbox.backend.common.typ.Sequence[NDArray]])
- Return type: