2017-04-01 4 views
0

Ich brauche ein Array von mnist Bildwerte auf die folgende Variablen zuzuweisen ...Wie man numpy Arrays zu einer bestimmten Form verkettet?

x = tf.get_variable("input_image", shape=[10,784], dtype=tf.float32) 

Das Problem ist, I der durch die mnist Datensatz sichten muss und 10 Bilder der Nummer 2 extrahieren und zuweisen zu x.

Das ist mein Ansatz durch den Datensatz bei Sichtung und Extrahieren der Nummer 2 ...

while mnist.test.next_batch(FLAGS.batch_size): 
    sample_image, sample_label = mnist.test.next_batch(10) 
    # get number 2 
    itemindex = np.where(sample_label == 1) 

    if itemindex[1][0] == 1: 
     # append image to numpy 
     np.append(labels_of_2, sample_image) 
    # if the numpy array has 10 images then we stop 
    if labels_of_2.size == 10: 
     break 

# assign to variable 
sess.run(tf.assign(x, labels_of_2)) 

Das Problem ist, ich glaube, dass meine Logik fehlerhaft ist. Ich brauche einen Array mit Form [10, 784] die Variablen x gerecht zu werden und deutlich die folgende Zeile ist nicht der richtige Weg, es zu tun ...

np.append(labels_of_2, sample_image) 

Es muss eine einfache Möglichkeit, zu erreichen, was ich will, aber ich kann es nicht verstehen aus.

Antwort

1

Vergessen np.append; sammelt die Bilder in einer Liste

alist = [] 
while mnist.test.next_batch(FLAGS.batch_size): 
    sample_image, sample_label = mnist.test.next_batch(10) 
    # get number 2 
    itemindex = np.where(sample_label == 1) 

    if itemindex[1][0] == 1: 
     alist.append(sample_image) 
    # if the list has 10 images then we stop 
    if len(alist) == 10: 
     break 

    labels_of_2 = np.array(alist) 

die Arrays in alist haben alle die gleiche Größe Unter der Annahme, z.B. (784,), dann erzeugt die array-Funktion ein neues Array mit Shape (10, 784). Wenn die Bilder (1.784) sind, können Sie stattdessen np.concatenate(alist, axis=0) verwenden.

Liste append ist schneller und einfacher zu bedienen.

Verwandte Themen