t3_entries_corewise_transpose#

t3toolbox.backend.entries.t3_entries_corewise_transpose(c, index, core_pair, sum_over_probes=False)#
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 t3_entries(): gradient of the sampled entries w.r.t. the frame’s cores.

The entries counterpart of t3_apply_corewise_transpose() – the Section 6.3 substitution into 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).

Parameters:
  • c (NDArray)

  • index (NDArray)

  • core_pair (t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Sequence[NDArray], t3toolbox.backend.common.typ.Sequence[NDArray]])

  • sum_over_probes (bool)

Return type:

t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[NDArray, Ellipsis], t3toolbox.backend.common.typ.Tuple[NDArray, Ellipsis]]