Основной вызов метода tfds.load
содержит все, что вам нужно:
mnist_dataset, mnist_info = tfds.load(name = 'mnist', with_info=True, as_supervised=True)
name="mnist"
-> вы указываете конструктор, который хотите использовать (mnist) with_info=True
-> вы просите tfds.load
вернуть info
объект, содержащий все, что вам нужно знать о возвращенном наборе данных as_supervised=True
->вы просите tfds.load
получить только те элементы набора данных, которые необходимы для контролируемой учебной задачи (пара изображений и меток).
Ваша первая попытка использования mnist_dataset
для получения данных(использовать с matplotlib
) не удалось, поскольку, как вы можете видеть из
print(mnist_info) #run me!
Набор данных содержит 2 разных разбиения: train
и test
.
tfds.core.DatasetInfo(
name='mnist',
version=1.0.0,
description='The MNIST database of handwritten digits.',
urls=['https://storage.googleapis.com/cvdf-datasets/mnist/'],
features=FeaturesDict({
'image': Image(shape=(28, 28, 1), dtype=tf.uint8),
'label': ClassLabel(shape=(), dtype=tf.int64, num_classes=10),
}),
total_num_examples=70000,
splits={
'test': 10000,
'train': 60000,
},
supervised_keys=('image', 'label'),
citation="""@article{lecun2010mnist,
title={MNIST handwritten digit database},
author={LeCun, Yann and Cortes, Corinna and Burges, CJ},
journal={ATT Labs [Online]. Available: http://yann. lecun. com/exdb/mnist},
volume={2},
year={2010}
}""",
redistribution_info=,
)
Таким образом,объект, возвращаемый tfds.load
, является словарем :
{
"train": <train dataset>,
"test": <test dataset>
}
Фактически, в следующей строке примера вы извлекаете наборы данных "train" и "test" в этомway:
mnist_train, mnist_test = mnist_dataset['train'], mnist_dataset['test']
Из объекта mnist_info
вы можете получить любую информацию, необходимую для манипулирования вашим набором данных: количество разбиений, датип ta (например, «изображение» - это изображение размером 28x28x1 с dtype tf.uint8) и т. д. *