Как извлечь данные / метки обратно из набора данных TensorFlow - PullRequest
0 голосов
/ 20 мая 2019

Есть множество примеров, как создавать и использовать наборы данных TensorFlow, например,

dataset = tf.data.Dataset.from_tensor_slices((images, labels))

Мой вопрос заключается в том, как вернуть данные / метки из набора данных TF в виде таблицы? Другими словами, нужно было бы выполнить обратную операцию в приведенной выше строке, т. Е. У меня есть набор данных TF, и я хочу получить из него изображения и метки.

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Вот мое собственное решение проблемы:

def dataset2numpy(dataset, steps=1):
    "Helper function to get data/labels back from TF dataset"
    iterator = dataset.make_one_shot_iterator()
    next_val = iterator.get_next()
    with tf.Session() as sess:
        for _ in range(steps):
           inputs, labels = sess.run(next_val)
           yield inputs, labels

Обратите внимание, что эта функция выдаст входные данные / метки пакета набора данных.Шаги определяют, сколько пакетов из набора данных будет извлечено.

0 голосов
/ 20 мая 2019

Я думаю, что у нас есть хороший пример:

https://colab.research.google.com/github/tensorflow/datasets/blob/master/docs/overview.ipynb#scrollTo=BC4pEXtkp4K-

import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf
import tensorflow_datasets as tfds

# where mnsit train is a tf dataset
mnist_train = tfds.load(name="mnist", split=tfds.Split.TRAIN)
assert isinstance(mnist_train, tf.data.Dataset)

mnist_example, = mnist_train.take(1)
image, label = mnist_example["image"], mnist_example["label"]

plt.imshow(image.numpy()[:, :, 0].astype(np.float32), cmap=plt.get_cmap("gray"))
print("Label: %d" % label.numpy())

Таким образом, каждый отдельный компонент набора данных может быть доступен как словарь.Предположительно, разные наборы данных имеют разные имена полей (в бостонском корпусе не будет изображения и значения, но могут быть «особенности» и «цель» или «цена»):

cnn = tfds.load(name="cnn_dailymail", split=tfds.Split.TRAIN)
assert isinstance(cnn, tf.data.Dataset)
cnn_ex, = cnn.take(1)
print(cnn_ex)

возвращает dict () с ключами['article', 'highlight'] с пустыми строками внутри.

...