t3_entries_corewise_transpose ============================= .. py:function:: t3toolbox.backend.entries.t3_entries_corewise_transpose(c, index, core_pair, sum_over_probes = False) .. code-block:: python def t3_entries_corewise_transpose( c: NDArray, # residual, shape=W+C index: NDArray, # int, shape=(d,)+W core_pair: typ.Tuple[ typ.Sequence[NDArray], # tucker_cores, len=d, elm_shape=C+(ni,Ni) typ.Sequence[NDArray], # tt_cores, len=d, elm_shape=C+(ri,ni,r(i+1)) ], sum_over_probes: bool = False, # True: sum the apply stack W (scatter-adds collisions) ) -> typ.Tuple[ typ.Tuple[NDArray, ...], # tucker-core gradients, same shapes as tucker_cores typ.Tuple[NDArray, ...], # tt-core gradients, same shapes as tt_cores ]: Corewise (non-manifold) transpose of :py:func:`t3_entries`: gradient of the sampled entries w.r.t. the frame's cores. The ``entries`` counterpart of :py:func:`t3_apply_corewise_transpose` -- the Section 6.3 substitution into :py:func:`tv_entries_transpose`. Needs no ambient ``shape`` argument: the dims come from the frame ``tucker_cores``. ``sum_over_probes=True`` scatter-adds colliding indices (the gradient ``J^T r``).