繁体   English   中英

如何在 tensorflow_datasets 加载的数据集中分别加载图像和标签

[英]How to load images and labels seperately in a dataset loaded by tensorflow_datasets

import tensorflow_datasets as tfds

train_ds = tfds.load('cifar100', split='train[:90%]').shuffle(1024).batch(32)
val_ds = tfds.load('cifar100', split='train[-10%:]').shuffle(1024).batch(32)

我想将train_dsval_ds转换成这样的东西: x_train, y_trainx_val, y_val (x 代表图像,y 代表标签)。 Keras API 使用训练和测试数据拆分(sklearn 中似乎也是这种情况),但我不想在这里使用任何测试数据。

我已经尝试过了,但它没有用(我确实理解为什么这不起作用,但我不知道如何将我的训练数据转换为图像和标签):

x_train = train_ds['image']

# TypeError: 'BatchDataset' object is not subscriptable

不是最好的方法,我首先创建了列表来检查它们。 我想你想要这样的东西:

train_ds = tfds.load('mnist', split='train[:90%]')

train_examples_labels = tfds.as_numpy(train_ds)

x_train = []
y_train = []


for features_labels in train_examples_labels:
    x_train.append(features_labels['image'])
    y_train.append(features_labels['label'])

features_labels是这里的字典:

features_labels.keys()
dict_keys(['image', 'label'])

之后可以将它们转换为numpy arrays。

x_train = np.array(x_train, dtype = 'float32')
y_train = np.array(y_train, dtype = 'float32')

我找到了一个更好的解决方案:

train_ds, val_ds = tfds.load(name="cifar100", split=('train[:90%]','train[-10%:]'), batch_size=-1, as_supervised=True)

x_train, y_train = tfds.as_numpy(train_data)
x_val, y_val = tfds.as_numpy(val_data)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM