Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java &引用;内部错误:准备张量分配时出现意外故障";-Firebase MLKIT-Android-本地模型加载失败_Java_Android_Firebase_Firebase Mlkit_Google Mlkit - Fatal编程技术网

Java &引用;内部错误:准备张量分配时出现意外故障";-Firebase MLKIT-Android-本地模型加载失败

Java &引用;内部错误:准备张量分配时出现意外故障";-Firebase MLKIT-Android-本地模型加载失败,java,android,firebase,firebase-mlkit,google-mlkit,Java,Android,Firebase,Firebase Mlkit,Google Mlkit,我正在使用Firebase MLKIT在应用程序中本地实现“.tflite”模型。model.tflite文件的大小约为132 MB。 它显示了错误原因: onFailure:java.lang.IllegalStateException:内部错误:准备tensor分配时意外失败:此解释器不支持常规TensorFlow操作。确保在推理之前调用Flex委托。节点编号17(Flex)无法准备。 和错误消息: 本地模型加载失败,模型选项为:本地模型路径:model.tflite。远程型号名称:未指定。

我正在使用Firebase MLKIT在应用程序中本地实现“.tflite”模型。model.tflite文件的大小约为132 MB。 它显示了错误原因:

onFailure:java.lang.IllegalStateException:内部错误:准备tensor分配时意外失败:此解释器不支持常规TensorFlow操作。确保在推理之前调用Flex委托。节点编号17(Flex)无法准备。

和错误消息:

本地模型加载失败,模型选项为:本地模型路径:model.tflite。远程型号名称:未指定。

该模型用于将一幅普通图像转换为黑白图像[出于某种目的]

我也列出了依赖项

  • 实现'com.google.firebase:firebase ml模型解释器:22.0.3'
  • 实现“org.tensorflow:tensorflow lite:1.13.1”
我也访问了链接,但无法理解如何处理我的案例中的此问题:

我也在附上代码片段:

'''

FirebaseCustomLocalModel localModel=null;
试一试{
localModel=新的FirebaseCustomLocalModel.Builder()
.setAssetFilePath(“model.tflite”)
.build();
}捕获(例外e){
e、 printStackTrace();
Log.d(标签“onClick:+e);
}
FireBaseModel解释器;
FireBaseModelTranslations选项=
新的FireBaseModelExplorations.Builder(localModel.build();
试一试{
解释器=FireBaseModelTransparer.getInstance(选项);
FirebaseModelInputOutputOptions inputOutputOptions=
新的FirebaseModelInputOutputOptions.Builder()
.setInputFormat(0,FirebaseModelDataType.FLOAT32,新int[]{1,256,256,3})
.setOutputFormat(0,FirebaseModelDataType.FLOAT32,新int[]{420,580})
.build();
位图位图=getYourInputImage();
位图=位图。createScaledBitmap(位图,256,256,真);
int batchNum=0;
浮动[]输入=新浮动[1][256][256][3];
对于(int x=0;x<256;x++){
对于(int y=0;y<256;y++){
int pixel=bitmap.getPixel(x,y);
//将通道值规格化为[-1.0,1.0]。此要求因时间而异
//例如,一些模型可能需要标准化值
//改为范围[0.0,1.0]。
输入[batchNum][x][y][0]=(彩色.红色(像素)-127)/128.0f;
输入[batchNum][x][y][1]=(颜色.绿色(像素)-127)/128.0f;
输入[batchNum][x][y][2]=(颜色.蓝色(像素)-127)/128.0f;
}
}
FirebaseModelInputs=新的FirebaseModelInputs.Builder()
.add(input)//add()模型所需的输入数组数
.build();
//Log.d(标记“onClick:”+inputs.toString()+“\n”+inputOutputOptions.toString());
运行(输入,输入输出选项)
.addOnSuccessListener(
新OnSuccessListener(){
@凌驾
成功时公共无效(FirebaseModelOutputs结果){
// ...
float[][]output=result.getOutput(0);
float[]概率=输出[0];
Log.d(标记“onSuccess:+result.getOutput(0.toString());
}
})
.addOnFailureListener(
新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
//任务失败,出现异常
// ...
Log.d(标记“onFailure:”+e.getCause()+“\n\n”+e.getLocalizedMessage()+“\n\n”+e.getMessage());
}
});
}捕获(FireBaseMException e){
Log.d(标签“onClick:+e);
// ...
}
'''


让我知道需要做什么。

FirebaseModel解释器不支持Flex操作。您应该直接使用tflite解释器(org.tensorflow.Interpreter)

使用FirebaseModelManager下载tflite文件:

    Task<File> fileTask = FirebaseModelManager.getInstance()
              .getLatestModelFile(remoteModel);
    File modelFile = fileTask.getResult();
希望有帮助

    Task<File> fileTask = FirebaseModelManager.getInstance()
              .getLatestModelFile(remoteModel);
    File modelFile = fileTask.getResult();
    FlexDelegate delegate = new FlexDelegate();
    Interpreter.Options options = new Interpreter.Options().addDelegate(delegate);
    Interpreter interpreter = new Interpreter(fileBuffer, options);
    interpreter.run(inputs, outputs)