Мне нужно изменить фрагмент кода, чтобы получить данные класса изображения в виде массива 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?