我尝试使用Tensorflow Lite,但它有很多限制,它没有批处理规范化操作,即使使用简单的操作,它也为使用Keras测试的相同数据提供了非常奇怪的结果。这意味着使用keras一切正常,使用tensorflow lite,结果是完全错误的。所以我需要一些东西才能在Android上执行.pb文件。
答案 0 :(得分:2)
您可以使用TensorFlowInferenceInterface
通过.pb文件进行预测。首先,将.pb文件放在应用程序的资产文件夹中。
implementation 'org.tensorflow:tensorflow-android:1.11.0'
TensorFlowInferenceInterface tensorFlowInferenceInterface = new TensorFlowInferenceInterface(context.getAssets() , "file:///android_asset/model.pb") ;
tensorFlowInferenceInterface.feed( INPUT_NAME , inputs , 1, 28, 28);
,其中INPUT_NAME
是输入层的名称。 1 , 50
是输入尺寸。
tensorFlowInferenceInterface.run( new String[]{ OUTPUT_NAME } );
,其中OUTPUT_NAME
是您的输出图层的名称。
float[] outputs = new float[ nuymber_of_classes ];
tensorFlowInferenceInterface.fetch( OUTPUT_NAME , outputs ) ;
outputs
是根据模型预测的浮点值。
这是完整的代码:
TensorFlowInferenceInterface tensorFlowInferenceInterface = new
TensorFlowInferenceInterface(context.getAssets() , "file:///android_asset/model.pb");
tensorFlowInferenceInterface.feed( INPUT_NAME , inputs , 1, 28, 28);
tensorFlowInferenceInterface.run( new String[]{ OUTPUT_NAME } );
float[] outputs = new float[ nuymber_of_classes ];
tensorFlowInferenceInterface.fetch( OUTPUT_NAME , outputs ) ;