Tensorflow BatchDataset, кажется, перемешивается каждый раз при повторении через него, почему это происходит - PullRequest
0 голосов
/ 21 июня 2020

Мне нужно изменить фрагмент кода, чтобы получить данные класса изображения в виде массива numpy из набора тензорных данных. Данные хранятся в парах тензорного потока BatchDataset. Первый тензор хранит информацию об изображении, второй описывает класс, к которому принадлежит указанное изображение. Я пытаюсь просто распечатать второй тензор, используя следующие циклы:

for _, y in ds_train:
    print(y)

print("------------")

for _, y in ds_train:
    print(y)

Однако значения, которые я получаю, сильно различаются для каждого l oop (я тестировал это с помощью небольшого набора данных из 4 элементов для ясности):

tf.Tensor([[False False False False  True]], shape=(1, 5), dtype=bool)
tf.Tensor([[False False  True False False]], shape=(1, 5), dtype=bool)
tf.Tensor([[False False False False  True]], shape=(1, 5), dtype=bool)
tf.Tensor([[False  True False False False]], shape=(1, 5), dtype=bool)
------------
tf.Tensor([[False  True False False False]], shape=(1, 5), dtype=bool)
tf.Tensor([[False False False  True False]], shape=(1, 5), dtype=bool)
tf.Tensor([[ True False False False False]], shape=(1, 5), dtype=bool)
tf.Tensor([[False False False False  True]], shape=(1, 5), dtype=bool)

При проверке типа ds_train я получаю:

> print(type(ds_train))

<class 'tensorflow.python.data.ops.dataset_ops.BatchDataset'>

Почему кажется, что набор данных перемешивается каждый раз, когда я повторяю его? Как получить тензоры всегда в одном и том же порядке при итерации по BatchDataset?

...