web-dev-qa-db-fra.com

TensorFlow crée un jeu de données à partir d'un tableau numpy

TensorFlow as build le un moyen agréable de stocker des données. Ceci est par exemple utilisé pour stocker les données MNIST dans l'exemple:

>>> mnist
<tensorflow.examples.tutorials.mnist.input_data.read_data_sets.<locals>.DataSets object at 0x10f930630>

Supposons avoir des tableaux numpy d'entrée et de sortie. 

>>> x = np.random.normal(0,1, (100, 10))
>>> y = np.random.randint(0, 2, 100)

Comment puis-je les transformer en un ensemble de données tf

Je veux utiliser des fonctions comme next_batch

12
Donbeo

L'objet Dataset n'est qu'une partie du didacticiel MNIST, pas la bibliothèque principale TensorFlow.

Vous pouvez voir où il est défini ici:

Lien GitHub

Le constructeur accepte les arguments images et labels afin que vous puissiez probablement y passer vos propres valeurs.

8
Ian Goodfellow

Récemment, Tensorflow a ajouté une fonctionnalité à son api de jeu de données afin de consommer un tableau numpy. Voir ici pour plus de détails.

Voici l'extrait que j'ai copié à partir de là:

# Load the training data into two NumPy arrays, for example using `np.load()`.
with np.load("/var/data/training_data.npy") as data:
  features = data["features"]
  labels = data["labels"]

# Assume that each row of `features` corresponds to the same row as `labels`.
assert features.shape[0] == labels.shape[0]

features_placeholder = tf.placeholder(features.dtype, features.shape)
labels_placeholder = tf.placeholder(labels.dtype, labels.shape)

dataset = tf.data.Dataset.from_tensor_slices((features_placeholder, labels_placeholder))
# [Other transformations on `dataset`...]
dataset = ...
iterator = dataset.make_initializable_iterator()

sess.run(iterator.initializer, feed_dict={features_placeholder: features,
                                          labels_placeholder: labels})
0
MajidL

Vous pouvez également utiliser la fonction tf.train.batch() pour créer un lot de vos données tout en éliminant l'utilisation de tf.placeholder. Reportez-vous à la documentation pour plus de détails.

>>> images = tf.constant(X, dtype=tf.float32) # X is a np.array
>>> labels = tf.constant(y, dtype=tf.int32)   # y is a np.array
>>> batch_images, batch_labels = tf.train.batch([images, labels], batch_size=32, capacity=300, enqueue_many=True)
0
WenFeng Luo