tensor

sentence_transformers.util.tensor.batch_to_device(batch: dict[str, Any], target_device: device) dict[str, Any][source]

Send a PyTorch batch (i.e., a dictionary of string keys to Tensors) to a device (e.g. “cpu”, “cuda”, “mps”).

Parameters:
  • batch (Dict[str, Tensor]) – The batch to send to the device.

  • target_device (torch.device) – The target device (e.g. “cpu”, “cuda”, “mps”).

Returns:

The batch with tensors sent to the target device.

Return type:

Dict[str, Tensor]

sentence_transformers.util.tensor.compute_count_vector(embeddings: Tensor) Tensor[source]

Compute count vector from sparse embeddings indicating how many samples have non-zero values in each dimension.

Parameters:

embeddings – Sparse tensor of shape (batch_size, vocab_size) or (vocab_size,)

Returns:

Count vector of shape (vocab_size,)

sentence_transformers.util.tensor.normalize_embeddings(embeddings: Tensor) Tensor[source]

Normalizes the embeddings matrix, so that each sentence embedding has unit length.

Parameters:

embeddings (Tensor) – The input embeddings matrix.

Returns:

The normalized embeddings matrix.

Return type:

Tensor

sentence_transformers.util.tensor.select_max_active_dims(embeddings: ndarray | Tensor, max_active_dims: int) Tensor[source]
sentence_transformers.util.tensor.select_max_active_dims(embeddings: ndarray, max_active_dims: None) ndarray
sentence_transformers.util.tensor.select_max_active_dims(embeddings: Tensor, max_active_dims: None) Tensor

Returns a new tensor with only the top-k values (in absolute terms) of each embedding, all others set to zero.

The input embeddings are never modified in place.

Parameters:
  • embeddings (Union[np.ndarray, torch.Tensor]) – Embeddings to sparsify by keeping only the largest values.

  • max_active_dims (Optional[int]) – Number of values to keep as non-zeros per embedding. None keeps all values, returning the embeddings as-is.

Raises:

ValueError – If max_active_dims is 0 or negative.

Returns:

A new dense tensor of the same shape, with all but the top-k values per

embedding set to zero. If max_active_dims is None, the embeddings are returned unchanged.

Return type:

Union[np.ndarray, torch.Tensor]

sentence_transformers.util.tensor.to_scipy_coo(x: Tensor) coo_matrix[source]

Converts a sparse PyTorch tensor to a SciPy COO sparse matrix.

Parameters:

x (torch.Tensor) – A 2-dimensional sparse PyTorch tensor in COO layout.

Example

>>> import torch
>>> from sentence_transformers.util import to_scipy_coo
>>> x = torch.sparse_coo_tensor([[0, 1], [1, 0]], [1.0, 2.0], (3, 3))
>>> to_scipy_coo(x).toarray()
array([[0., 1., 0.],
       [2., 0., 0.],
       [0., 0., 0.]], dtype=float32)
Returns:

A SciPy COO matrix with the same shape, indices and values as the input tensor.

Return type:

scipy.sparse.coo_matrix

sentence_transformers.util.tensor.truncate_embeddings(embeddings: ndarray, truncate_dim: int | None) ndarray[source]
sentence_transformers.util.tensor.truncate_embeddings(embeddings: Tensor, truncate_dim: int | None) Tensor

Truncates the embeddings matrix.

Parameters:
  • embeddings (Union[np.ndarray, torch.Tensor]) – Embeddings to truncate.

  • truncate_dim (Optional[int]) – The dimension to truncate sentence embeddings to. None does no truncation.

Example

>>> from sentence_transformers import SentenceTransformer
>>> from sentence_transformers.util import truncate_embeddings
>>> model = SentenceTransformer("tomaarsen/mpnet-base-nli-matryoshka")
>>> embeddings = model.encode(["It's so nice outside!", "Today is a beautiful day.", "He drove to work earlier"])
>>> embeddings.shape
(3, 768)
>>> model.similarity(embeddings, embeddings)
tensor([[1.0000, 0.8100, 0.1426],
        [0.8100, 1.0000, 0.2121],
        [0.1426, 0.2121, 1.0000]])
>>> truncated_embeddings = truncate_embeddings(embeddings, 128)
>>> truncated_embeddings.shape
>>> model.similarity(truncated_embeddings, truncated_embeddings)
tensor([[1.0000, 0.8092, 0.1987],
        [0.8092, 1.0000, 0.2716],
        [0.1987, 0.2716, 1.0000]])
Returns:

Truncated embeddings.

Return type:

Union[np.ndarray, torch.Tensor]