Пакетные элементы в наборе данных Tensorflow, которые содержат переменное первое измерение, но постоянное второе измеренPython

Программы на Python
Anonymous
Пакетные элементы в наборе данных Tensorflow, которые содержат переменное первое измерение, но постоянное второе измерен

Сообщение Anonymous »

У меня есть набор данных Tensorflow, который содержит тензоры ранга 2. Каждый тензор был прочитан из файла и имеет различное первое измерение и постоянное второе измерение. Например, форма каждого предмета может быть следующей:

Код: Выделить всё

(123, 3)
(100, 3)
(134, 3)
...
Чтобы имитировать подобное поведение, вы можете использовать следующее:

Код: Выделить всё

lengths = tf.random.uniform(shape=(10,), minval=5, maxval=10, dtype=tf.int32)
# this would be a dataset of filenames in my code
dataset = tf.data.Dataset.from_tensor_slices(lengths)

def fake_read_file(tensor):
# this function would read and preprocess data from file in my code
# however, for demonstration purposes it just returns a dummy data with varying length in the first dimension
dummy_data = tf.convert_to_tensor([[0.2, 0.2, 0.2]])
return tf.repeat(dummy_data, tensor, axis=0)

# I use tf.py_function decorator because file read can be done only in eager mode
dataset = dataset.map(lambda x: tf.py_function(fake_read_file, inp=[x], Tout=tf.float32))
Мне нужно пакетировать этот набор данных с помощью RaggedTensors (я не хочу дополнять входные данные). Размеры каждого пакета должны быть (batch_size, None, 3).
Сейчас я придумал следующее решение:

Код: Выделить всё

dataset = dataset.map(lambda x: tf.RaggedTensor.from_tensor(x))
dataset = dataset.batch(batch_size=2, drop_remainder=True)
Однако, когда я перебираю набор данных, я получаю пакеты формы (batch_size, None, None), т. е. последнее измерение тоже становится неровным.

Подробнее здесь: https://stackoverflow.com/questions/789 ... n-but-cons

Вернуться в «Python»