tdhook.latent.dimension_estimation.local_knn#

Classes#

LocalKnnDimensionEstimator

Local intrinsic dimension estimation via k-NN distances [20].

Functions#

_resolve_k(k, n)

Resolve k to an integer. If 'auto', use int(n**0.5), clamped to valid range.

_local_knn(data, k, eps)

Compute per-point local dimension. data: (N, D). Returns (N,) dimension estimates.

Module Contents#

tdhook.latent.dimension_estimation.local_knn._resolve_k(k, n)[source]#

Resolve k to an integer. If ‘auto’, use int(n**0.5), clamped to valid range.

Parameters:
  • k (Union[int, Literal['auto']])

  • n (int)

Return type:

int

class tdhook.latent.dimension_estimation.local_knn.LocalKnnDimensionEstimator(k='auto', in_key='data', out_key='dimension', eps=1e-05)[source]#

Bases: tensordict.nn.TensorDictModuleBase

Local intrinsic dimension estimation via k-NN distances [20].

For each point x, d(x) = ln(2) / ln(R2k/Rk), where Rk and R2k are distances to the k-th and 2k-th nearest neighbors respectively.

Reads a data tensor from the input TensorDict. Expects (N, D) or (…, N, D). Outputs per-point dimension estimates of shape (…, N).

Parameters:
  • k (Union[int, Literal['auto']])

  • in_key (str)

  • out_key (str)

  • eps (float)

k = 'auto'[source]#
in_key = 'data'[source]#
out_key = 'dimension'[source]#
eps = 1e-05[source]#
in_keys[source]#
out_keys[source]#
forward(td)[source]#
Parameters:

td (tensordict.TensorDict)

Return type:

tensordict.TensorDict

__repr__()[source]#
tdhook.latent.dimension_estimation.local_knn._local_knn(data, k, eps)[source]#

Compute per-point local dimension. data: (N, D). Returns (N,) dimension estimates.

Parameters:
  • data (torch.Tensor)

  • k (int)

  • eps (float)

Return type:

torch.Tensor