#python #loops #tensorflow #tensor
#python #циклы #tensorflow #тензор
Вопрос:
У меня есть Dataset
объект tensorflow, созданный с помощью набора данных CIFAR-100.Мне нужно получить доступ к меткам поездов TensorSpec
внутри Dataset
объекта.Доступ к нему по индексу невозможен, поскольку TensorSliceDataset
объект не поддерживает индекс.Как получить доступ к каждому TensorSpec
и выполнить итерацию по значениям внутри него.
(train_data, train_labels), (test_data, test_labels) = cifar100.load_data(label_mode='fine')
with open('data/cifar100/cifar100_labels.json', 'r') as j:
cifar_labels = json.load(j)
dataset = tf.data.Dataset.from_tensor_slices((train_data,train_labels))
print(train_dataset.element_spec)
# (TensorSpec(shape=(32, 32, 3), dtype=tf.uint8, name=None),
# TensorSpec(shape=(1,), dtype=tf.int64, name=None))
Ответ №1:
Вы можете превратить метки в массив:
import tensorflow as tf
(train_data, train_labels), (test_data, test_labels) = tf.keras.datasets.mnist.load_data()
dataset = tf.data.Dataset.from_tensor_slices((train_data,train_labels))
next(dataset.batch(60_000).as_numpy_iterator())[1]
array([5, 0, 4, ..., 5, 6, 8], dtype=uint8)
Это то, что вы ищете?
Комментарии:
1. спасибо за ваш ответ. Мне нужно применить функцию фильтра для объекта Dataset и применить маску как для меток, так и для данных. маска генерируется с помощью меток. Я мог бы сделать это до создания объекта Dataset с использованием np-массивов. tensorflow.org/api_docs/python/tf/data/Dataset#filter