2017-04-25 2 views
0

Ich verwende Tensorflow in Android. Ich habe die apk für TFClassify zur Verfügung gestellt. Ich lief die Anwendung und es läuft schnell mit Inferenzzeit von nicht mehr als 400ms. Wenn ich jedoch das verfügbare trainierte Modell durch mein Modell ersetze, dauert es ungefähr 2000 ms für die Berechnung, bevor das Ergebnis angezeigt wird. Warum gibt es so einen Unterschied und wie kann ich meine umtrainierte_graph.pb optimieren?Wie zu verbessern Rechenzeit in Tensorflow

Antwort

0

Haben Sie das umgeschulte Modell in einen optimierten & quantisierten Graphen umgewandelt?

Wenn nicht versuchen:

tensorflow/bazel-bin/tensorflow/python/tools/optimize_for_inference \ 
     --input=retrained_graph.pb \ 
     --output=optimized_graph.pb \ 
     --input_names=Mul \ 
     --output_names=final_result 

tensorflow/bazel-bin/tensorflow/tools/quantization/quantize_graph \ 
     --input=optimized_graph.pb \ 
     --output=rounded_graph.pb \ 
     --output_node_names=final_result \ 
     --mode=weights_rounded 

FYI, müssen Sie zunächst diese Werkzeuge bauen.

+0

I optimiert und quantisiert die Grafik und es verbessert. Die Inferenzzeit ist nun auf 1800ms reduziert, aber immer noch sehr viel mehr als beim ursprünglichen Modell (400ms). Gibt es noch weitere Möglichkeiten zur Verbesserung? Die Größe meines Modells ist 87,1 MB –

+0

Zunächst spielt die Größe der Grafikdatei keine Rolle. Quantisierte Graphen können komprimiert werden, wenn sie in .APK gepackt sind. Zweitens möchte ich auch wissen, wie man die Inferenzleistung auf Android verbessern kann. Ich habe noch nicht versucht, aber http://stackoverflow.com/questions/43585773/how-to-pass-optimization-flags-to-bazel-build-for-tensorflow (Build mit Makefile) ist der einzige Anhaltspunkt Ich konnte so weit finden. –