2 votes

équivalent PyTorch de tf.dynamic_partition

Je dois utiliser un équivalent de tf.dynamic_partition dans PyTorch. Y a-t-il quelque chose avec une fonctionnalité similaire dans PyTorch ou dans une autre bibliothèque ou existe-t-il un moyen simple et astucieux de le coder pour PyTorch et de travailler rapidement ?

0voto

Szymon Maszke Points 3283

Oui, vous pouvez créer itérativement des masques booléens pour des indices uniques :

import torch

# partitions should be integer-like types
def dynamic_partition(
    data: torch.Tensor, partitions: torch.Tensor, num_partitions=None
):
    assert len(partitions.shape) == 1, "Only one dimensional partitions supported"
    assert (
        data.shape[0] == partitions.shape[0]
    ), "Partitions requires the same size as data"

    if num_partitions is None:
        num_partitions = max(torch.unique(partitions))

    return [data[partitions == i] for i in range(num_partitions)]

Et exemple tiré de tf.dynamic_partition documentation :

partitions = torch.tensor([0, 0, 1, 1, 0])
num_partitions = 2
data = torch.tensor([10, 20, 30, 40, 50])

dynamic_partition(data, partitions, num_partitions)

Ce qui donne les mêmes résultats que l'exemple, à savoir :

[torch.tensor([10, 20, 50]), torch.tensor([30, 40])]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X