Wie machen Sie TensorFlow + Keras schnell mit einem TFRecord dataset?

Was ist ein Beispiel für die Verwendung einer TensorFlow TFRecord mit Keras Modell und tf.Sitzung.run (), während der Datensatz in Tensoren w/queue-Läufer?

Unten ist ein Ausschnitt, das funktioniert, aber es benötigt die folgenden Verbesserungen:

  • Verwenden Sie die Modell-API
  • geben Sie eine Eingabe()
  • Laden Sie ein dataset aus einem TFRecord
  • Laufen über ein dataset parallel (z.B. mit einem queuerunner)

Hier ist das snippet, es sind mehrere TODO-Zeilen angibt, was benötigt wird:

from keras.models import Model
import tensorflow as tf
from keras import backend as K
from keras.layers import Dense, Input
from keras.objectives import categorical_crossentropy
from tensorflow.examples.tutorials.mnist import input_data

sess = tf.Session()
K.set_session(sess)

# Can this be done more efficiently than placeholders w/TFRecords?
img = tf.placeholder(tf.float32, shape=(None, 784))
labels = tf.placeholder(tf.float32, shape=(None, 10))

# TODO: Use Input() 
x = Dense(128, activation='relu')(img)
x = Dense(128, activation='relu')(x)
preds = Dense(10, activation='softmax')(x)
# TODO: Construct model = Model(input=inputs, output=preds)

loss = tf.reduce_mean(categorical_crossentropy(labels, preds))

# TODO: handle TFRecord data, is it the same?
mnist_data = input_data.read_data_sets('MNIST_data', one_hot=True)

train_step = tf.train.GradientDescentOptimizer(0.5).minimize(loss)

sess.run(tf.global_variables_initializer())

# TODO remove default, add queuerunner
with sess.as_default():
    for i in range(1000):
        batch = mnist_data.train.next_batch(50)
        train_step.run(feed_dict={img: batch[0],
                                  labels: batch[1]})
    print(loss.eval(feed_dict={img: mnist_data.test.images, labels: mnist_data.test.labels}))

Warum ist diese Frage relevant?

Hier einige starter-Informationen für eine semantische Segmentierung problem Beispiel:

github.com/tensorflow/tensorflow/issues/8787 werden für die Arbeit in Richtung auf die uneingeschränkte Unterstützung dieser Funktionalität, die über die quick-fix in der akzeptierten Antwort.
aktualisiert pull-request github.com/fchollet/keras/pull/6928

InformationsquelleAutor Andrew Hundt | 2017-02-12

Schreibe einen Kommentar