tv_apply_derivatives ==================== .. py:function:: t3toolbox.backend.sampling_derivatives.tv_apply_derivatives(ww, pp, variation, frame, order) .. code-block:: python def tv_apply_derivatives( 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,) variation: typ.Tuple[ typ.Sequence[NDArray], # var_tucker_cores dU. len=d, elm_shape=K+C+(nOi,Ni) typ.Sequence[NDArray], # var_tt_cores dG. len=d, elm_shape=K+C+(rLi,nUi,rRi) ], # = T3Variations.data frame: typ.Tuple[ typ.Sequence[NDArray], # up_tucker_cores U. len=d typ.Sequence[NDArray], # down_tt_cores O. len=d typ.Sequence[NDArray], # left_tt_cores P. len=d typ.Sequence[NDArray], # right_tt_cores Q. len=d ], # = T3Frame.data = (up, down, left, right) = (U, O, P, Q) order: int, # highest derivative order ) -> NDArray: # apply-derivative jets, shape=(order+1,)+W+K+C Symmetric derivatives of applying a tangent vector in all modes, in one repeated direction. The all-modes Riemannian analog of :py:func:`tv_probe_derivatives` (and the derivative analog of :py:func:`apply.tv_apply`): returns ``y^(t) = d^t/ds^t [apply(v, W + s P)]|_0`` for ``t=0..order``, where ``v`` is the tangent vector ``(frame, variation)``. A single left-to-right pass (frame mu via P, perturbation sigma via Q) to the terminal carry, bond summed. Stacks ``order + W + K + C`` (sample stack ``W``, tangent stack ``K``, frame stack ``C``). Verified against :py:func:`dense_apply_derivatives` on the densified tangent. .. seealso:: :py:obj:`t3_apply_derivatives`, :py:obj:`tv_probe_derivatives`, :py:obj:`apply.tv_apply`