2015-12-18 26 views
12

TensorFlow jako zbudować to dobry sposób na przechowywanie danych. Jest to na przykład używane do przechowywania danych MNIST w przykładzie:TensorFlow utworzyć zestaw danych z tablicy numpy

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

Załóżmy, że mamy macierze numpy i wejścia i wyjścia.

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

Jak mogę je przekształcić w zestaw danych tf?

chcę użyć funkcji jak next_batch

Odpowiedz

8

Obiekt DataSet jest tylko część samouczka MNIST, nie Biblioteka Główna TensorFlow.

można zobaczyć, gdzie to jest zdefiniowane tutaj:

GitHub Link

Konstruktor akceptuje obrazów i etykiet argumentu więc prawdopodobnie można przekazać własne wartości istnieje.

+0

Ok, dzięki temu miałem tego podejrzanego. Myślę, że byłoby to pomocne narzędzie w ramach głównej biblioteki. AFAIK każda operacja wsadowa na tablicy numpy wymaga wykonania kopii danych. Może to prowadzić do wolniejszego algorytmu. – Donbeo

+0

Filozofia mówi, że TensorFlow powinien po prostu być podstawową biblioteką matematyczną, ale inne biblioteki o otwartym kodzie źródłowym mogą zapewnić dodatkowe abstrakcje używane do uczenia maszynowego. Podobne do Theano, na którym zbudowane są biblioteki takie jak Pylearn2. Jeśli chcesz uniknąć operacji kopiowania, możesz użyć funkcji dostępu do danych w oparciu o kolejki zamiast podawania symboli zastępczych. –

+0

Widzę punkt. Wielkie dzięki! – Donbeo

0

Alternatywnie można użyć funkcji tf.train.batch(), aby utworzyć pakiet danych, a jednocześnie wyeliminować użycie funkcji tf.placeholder. Więcej informacji można znaleźć w dokumentacji.

>>> 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)