Verwenden Sie 'read_batch_record_features' mit einem Estimator

(Ich benutze Tensorflow 1.0 und Python 2.7)

Ich habe Schwierigkeiten, einen Schätzer zu bekommen, um mit Warteschlangen zu arbeiten. In der Tat, wenn ich die veraltete SKCompat-Schnittstelle mit benutzerdefinierten Datendateien und einer bestimmten Chargengröße verwende, trainiert das Modell ordnungsgemäß. Ich versuche, die neue Schnittstelle mit einem input_fn zu verwenden, das Features aus TFRecord Dateien (entspricht meinen benutzerdefinierten Datendateien). Die Skripte laufen ordnungsgemäß, aber der Verlustwert ändert sich nach 200 oder 300 Schritten nicht. Es scheint, dass das Modell auf eine kleine Eingangs-Charge schleift (dies würde erklären, warum der Verlust so schnell konvergiert).

Ich habe ein 'run.py' Skript, das wie folgt aussieht:

import tensorflow as tf from tensorflow.contrib import learn, metrics #[...] evalMetrics = {'accuracy':learn.MetricSpec(metric_fn=metrics.streaming_accuracy)} runConfig = learn.RunConfig(save_summary_steps=10) estimator = learn.Estimator(model_fn=myModel, params=myParams, modelDir='/tmp/myDir', config=runConfig) session = tf.Session(graph=tf.get_default_graph()) with session.as_default(): tf.global_variables_initializer() coordinator = tf.train.Coordinator() threads = tf.train.start_queue_runners(sess=session,coord=coordinator) estimator.fit(input_fn=lambda: inputToModel(trainingFileList),steps=10000) estimator.evaluate(input_fn=lambda: inputToModel(evalFileList),steps=10000,metrics=evalMetrics) coordinator.request_stop() coordinator.join(threads) session.close() 

Meine inputToModel-Funktion sieht so aus:

 import tensorflow as tf def inputToModel(fileList): features = {'rawData': tf.FixedLenFeature([100],tf.float32), 'label': tf.FixedLenFeature([],tf.int64)} tensorDict = tf.contrib.learn.read_batch_record_features(fileList, batch_size=100, features=features, randomize_input=True, reader_num_threads=4, num_epochs=1, name='inputPipeline') tf.local_variables_initializer() data = tensorDict['rawData'] labelTensor = tensorDict['label'] inputTensor = tf.reshape(data,[-1,10,10,1]) return inputTensor,labelTensor 

Jede Hilfe oder Anregungen ist willkommen!

One Solution collect form web for “Verwenden Sie 'read_batch_record_features' mit einem Estimator”

Versuchen Sie zu verwenden: tf.global_variables_initializer().run()

Ich möchte eine ähnliche Sache machen, aber ich weiß nicht, wie man Estimator API mit Multi-Threading verwenden kann. Es gibt eine Experimentklasse für die Bedienung auch – könnte nützlich sein

Delete line session = tf.Session(graph=tf.get_default_graph()) und session.close() und versuche:

 with tf.Session() as sess: tf.global_variables_initializer().run() 
  • Tensorflow-Slicing basierend auf Variable
  • Verbesserung der Genauigkeit eines Tensorflusses neuronale Netzwerkpythons
  • Verstehen des LSTM-Modells mit Tensorflow für die Stimmungsanalyse
  • TensorFlow in der Produktion für Echtzeit-Prognosen in High-Traffic-App - wie zu verwenden?
  • TensorFlow: AttributeError: 'Tensor' Objekt hat kein Attribut 'log10'
  • Wiederherstellen des TensorFlow-Modells
  • Fehler beim Ausführen von Tensorflow Sequence to Sequence Tutorial
  • Klassifizierung von Sequenzen verschiedener Längen
  • Verständnis Tensorflow LSTM Eingabeform
  • Tensorflow Retrain unter Windows
  • Tensorflow, wie man auf alle Mittelzustände eines RNN zugreifen kann, nicht nur den letzten Zustand
  • Python ist die beste Programmiersprache der Welt.