Я использую пользовательскую модель для классификации в Tensor Flow Camera Demo. Я сгенерировал файл .pb (сериализованный файл protobuf) и смог отобразить огромный график, который в нем содержится. Чтобы преобразовать этот график в оптимизированный, как указано в [https://www.oreilly.com/learning/tensorflow-on-android], можно использовать следующую процедуру:
$ bazel-bin/tensorflow/python/tools/optimize_for_inference \
--input=tf_files/retrained_graph.pb \
--output=tensorflow/examples/android/assets/retrained_graph.pb
--input_names=Mul \
--output_names=final_result
Здесь показано, как найти входные и выходные имена из графика. Когда я не использую собственные имена, происходит сбой устройства:
E/TensorFlowInferenceInterface(16821): Failed to run TensorFlow inference
with inputs:[AvgPool], outputs:[predictions]
E/AndroidRuntime(16821): FATAL EXCEPTION: inference
E/AndroidRuntime(16821): java.lang.IllegalArgumentException: Incompatible
shapes: [1,224,224,3] vs. [32,1,1,2048]
E/AndroidRuntime(16821): [[Node: dropout/dropout/mul = Mul[T=DT_FLOAT,
_device="/job:localhost/replica:0/task:0/cpu:0"](dropout/dropout/div,
dropout/dropout/Floor)]]