Какой обходной путь для «рваных / неровных тензоров» в PyTorch? - PullRequest
4 голосов
/ 08 октября 2019

Tensorflow предоставляет рваные тензоры (https://www.tensorflow.org/guide/ragged_tensor). Однако PyTorch не предоставляет такую ​​структуру данных. Есть ли обходной путь для создания чего-то похожего в PyTorch?

import numpy as np
x = np.array([[0], [0, 1]])
print(x)  # [list([0]) list([0, 1])]

import tensorflow as tf
x = tf.ragged.constant([[0], [0, 1]])
print(x)  # <tf.RaggedTensor [[0], [0, 1]]>

import torch
# x = torch.Tensor([[0], [0, 1]])  # ValueError

Ответы [ 2 ]

3 голосов
/ 08 октября 2019

Нет способа сделать это в PyTorch. Вопрос в том, зачем вам такая функциональность?

Вы можете перебирать список torch.Tensor, используя поток управления Python for .. in для каждого из них. Вы также можете добавить их для использования torch определенных операций, таких как умножение или сложение. Вы также можете pack использовать их с рекуррентными нейронными сетями.

1 голос
/ 26 октября 2019

PyTorch реализует что-то под названием NestedTensors, которое, похоже, имеет ту же цель, что и RaggedTensors в Tensorflow. Вы можете следовать RFC и прогрессировать здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...