2017-11-16 3 views
0

Ich habe eine ausgebildete Rnn, die ich auf dem Handy zu verwenden versuchen. Das Problem ist, wenn ich toco verwenden, um meine .pb Datei zu .tflite wandeln es mit der folgenden Fehlermeldung fehlschlägt:Kann nicht Modell in Tensorflow Lite-Format konvertieren

WARNING: Config values are not defined in any .rc file: opt. 
INFO: Found 1 target... 
Target //tensorflow/contrib/lite/toco:toco up-to-date: 
    bazel-bin/tensorflow/contrib/lite/toco/toco 
INFO: Elapsed time: 0.287s, Critical Path: 0.00s 

INFO: Running command line: bazel-bin/tensorflow/contrib/lite/toco/toco '--input_file=/Users/valentinradu/Playgrounds/char-rnn-tensorflow/remote_save/latest/graph_frz.pb' '--output_file=/Users/valentinradu/Playgrounds/char-rnn-tensorflow/remote_save/latest/graph.tflite' '--input_format=TENSORFLOW_GRAPHDEF' '--output_format=TFLITE' '--input_type=FLOAT' '--inference_type=FLOAT' '--input_shapes=1,128:1,50,50' '--input_arrays=state_in,data_in' '--output_arrays=state_out,data_out' 
2017-11-16 06:48:00.156091: I tensorflow/contrib/lite/toco/import_tensorflow.cc:937] Converting unsupported operation: Fill 
2017-11-16 06:48:00.156811: I tensorflow/contrib/lite/toco/import_tensorflow.cc:937] Converting unsupported operation: Fill 
2017-11-16 06:48:00.156821: I tensorflow/contrib/lite/toco/import_tensorflow.cc:937] Converting unsupported operation: Pack 
2017-11-16 06:48:00.156829: I tensorflow/contrib/lite/toco/import_tensorflow.cc:937] Converting unsupported operation: Pack 
2017-11-16 06:48:00.156841: I tensorflow/contrib/lite/toco/import_tensorflow.cc:937] Converting unsupported operation: Unpack 
2017-11-16 06:48:00.156856: I tensorflow/contrib/lite/toco/import_tensorflow.cc:937] Converting unsupported operation: StridedSlice 
2017-11-16 06:48:00.156872: I tensorflow/contrib/lite/toco/import_tensorflow.cc:937] Converting unsupported operation: StridedSlice 
2017-11-16 06:48:00.157260: I tensorflow/contrib/lite/toco/import_tensorflow.cc:937] Converting unsupported operation: Pack 
2017-11-16 06:48:00.157277: I tensorflow/contrib/lite/toco/import_tensorflow.cc:937] Converting unsupported operation: Pack 
2017-11-16 06:48:00.158053: I tensorflow/contrib/lite/toco/graph_transformations/graph_transformations.cc:39] Before general graph transformations: 40 operators, 64 arrays (0 quantized) 
2017-11-16 06:48:00.158141: F tensorflow/contrib/lite/toco/graph_transformations/propagate_fixed_sizes.cc:793] Check failed: indices_shape.dimensions_count() == 1 (2 vs. 1) 

Nun, ich verstehe, dass dies, weil toco mein Modell erwartet nur einen Eingang haben, jedoch in das Beispiel, das ich bis jetzt gefunden habe, benutzen Leute 2 Eingänge ohne Problem.

Hat es mit einer Operation zu tun, die ich in meinem Modell verwende? Ist das eine bekannte Einschränkung oder ist es ein Fehler?

Here ist, wie ich mein Modell baue.

Antwort

0

Es scheint, dass es leider eine Beschränkung des Sammeloperators ist. Ich lasse das hier für den Fall, dass jemand anderes dieses Problem in der Zukunft trifft.

Wenn jemand mit mehr Erfahrung mit Tensorflow oder aus dem Team dies bestätigen kann, wäre es toll !.

1

tf.gather benötigt einen indices Parameter, der ein 1-dimensionales Array von Ganzzahlen sein soll.

Der Fehler, den Sie erhalten, besagt, dass ein Gather-Op in Ihrem Diagramm ein indices Array hat, das zweidimensional ist, anstatt wie erwartet 1-dimensional zu sein.

UPDATE: Ich wusste es nicht, aber es ist tatsächlich legitim, ein mehr als eindimensionales Index-Array in Gather zu haben. Behandeln Sie das als "noch nicht implementiert" Bug im TFLite Converter (toco).

+0

Ja, aber die Erwartung ist wegen eines hartcodierten Wertes (hat nichts mit meinem Modell zu tun). Danke für die Antwort! –

+0

tf.gather unterstützt Multi-d-Eingaben, aber die interne Darstellung von tocos kann nur die einfachere 1D-Form der Sammlung unterstützen. Auch wenn Toco einige Formen des Sammelns darstellen kann, unterstützt tflite derzeit keine Form. – aselle