[英]com.google.firebase.FirebaseException: An internal error has occurred. [ CONFIGURATION_NOT_FOUND ]
[英]Internal error has occurred when executing Firebase ML tasks
我使用 firebase ml 套件通过自定义 tflite model 执行设备推理。model 期望输入格式为类型:float32[1,71,37] 和输入格式为类型:float32[1,1,2]。
我面临的问题是,当我在 firebase model 解释器上调用运行方法时,它失败并显示一条错误消息,提示“执行 Firebase ML 任务时发生内部错误”。
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.ViewModelProvider
import com.example.hack_ai_thon_android.R
import com.google.android.gms.tasks.Task
import com.google.firebase.ml.common.modeldownload.FirebaseModelDownloadConditions
import com.google.firebase.ml.common.modeldownload.FirebaseModelManager
import com.google.firebase.ml.custom.*
class DashboardActivity : AppCompatActivity() {
lateinit var interpreter: FirebaseModelInterpreter
private lateinit var dashBoardViewModel: DashBoardViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_dashboard)
dashBoardViewModel = ViewModelProvider(this).get(DashBoardViewModel::class.java)
val surveyData = dashBoardViewModel.surveyData
var sem1 = surveyData.firstSem
var sem2 = surveyData.firstSem
var sem3 = surveyData.firstSem
var sem4 = surveyData.firstSem
var sem5 = surveyData.firstSem
var sem6 = surveyData.firstSem
var sem7 = surveyData.firstSem
var sem8 = surveyData.firstSem
var c = surveyData.c
var cpp = surveyData.cpp
var java = surveyData.java
var javaScript = surveyData.javaScript
var python = surveyData.python
var kotlin = surveyData.kotlin
var html = surveyData.htmlFive
var css = surveyData.cssThree
var php = surveyData.php
var r = surveyData.r
var db = surveyData.database
var rest = surveyData.restApi
var mobile = surveyData.mobile
var mlAi = surveyData.mlAi
var web = surveyData.web
var uiux = surveyData.uiUx
var cloud = surveyData.cloudComp
var datasci = surveyData.dataSci
var comp = surveyData.CompCoding
var ds = surveyData.dataStruct
var testing = surveyData.testing
val hours = surveyData.hoursSpentOnAcademics
var tech = surveyData.technicalClubsJoined
var extraC = surveyData.extraCurricularActivities
var video = surveyData.videoTutorials
var documentation = surveyData.documentation
var online = surveyData.onlineCourses
var techBlogs = surveyData.technicalBlogs
var softSkills = surveyData.softSkillsAndCommunication
val localModel = FirebaseCustomLocalModel.Builder()
.setAssetFilePath("Placement_Detector.tflite")
.build()
val interpreterOptions =
FirebaseModelInterpreterOptions.Builder(localModel).build()
interpreter = FirebaseModelInterpreter.getInstance(interpreterOptions)!!
val inputOutputOptions = FirebaseModelInputOutputOptions.Builder()
.setInputFormat(0, FirebaseModelDataType.FLOAT32, intArrayOf(1, 71, 37))
.setOutputFormat(0, FirebaseModelDataType.INT32, intArrayOf(1, 1, 2))
.build()
val batchNum = 0
val input = Array(1){
Array(71){
FloatArray(37)
}
}
//
val x=0
input[batchNum][x][0] = sem1.toFloat()
input[batchNum][x][1] = sem2.toFloat()
input[batchNum][x][2] = sem3.toFloat()
input[batchNum][x][3] = sem4.toFloat()
input[batchNum][x][4] = sem5.toFloat()
input[batchNum][x][5] = sem6.toFloat()
input[batchNum][x][6] = sem7.toFloat()
input[batchNum][x][7] = sem8.toFloat()
input[batchNum][x][8] = c.toFloat()
input[batchNum][x][9] = cpp.toFloat()
input[batchNum][x][10] = java.toFloat()
input[batchNum][x][11] = javaScript.toFloat()
input[batchNum][x][12] = python.toFloat()
input[batchNum][x][13] = kotlin.toFloat()
input[batchNum][x][14] = html.toFloat()
input[batchNum][x][15] = css.toFloat()
input[batchNum][x][16] = php.toFloat()
input[batchNum][x][17] = r.toFloat()
input[batchNum][x][18] = db.toFloat()
input[batchNum][x][19] = rest.toFloat()
input[batchNum][x][20] = mobile.toFloat()
input[batchNum][x][21] = mlAi.toFloat()
input[batchNum][x][22] = web.toFloat()
input[batchNum][x][23] = uiux.toFloat()
input[batchNum][x][24] = cloud.toFloat()
input[batchNum][x][25] = datasci.toFloat()
input[batchNum][x][26] = comp.toFloat()
input[batchNum][x][27] = ds.toFloat()
input[batchNum][x][28] = testing.toFloat()
input[batchNum][x][29] = hours.toFloat()
input[batchNum][x][30] = tech.toFloat()
input[batchNum][x][31] = extraC.toFloat()
input[batchNum][x][32] = video.toFloat()
input[batchNum][x][33] = documentation.toFloat()
input[batchNum][x][34] = online.toFloat()
input[batchNum][x][35] = techBlogs.toFloat()
input[batchNum][x][36] = softSkills.toFloat()
//
val inputs = FirebaseModelInputs.Builder()
.add(input) // add() as many input arrays as your model requires
.build()
val task: Task<FirebaseModelOutputs> = interpreter.run(inputs, inputOutputOptions);
task.addOnSuccessListener{
val output = it.getOutput<Array<FloatArray>>(0)
val probabilities1 = output[0]
Log.v("LOGTAG2", ""+probabilities1)
}.addOnFailureListener{
Log.v("LOGTAG2", "error: "+it.message)
}.addOnCompleteListener {
interpreter.close()
}
}
}
最新的 Firebase 建议直接实例化一个 TensorFlow Lite Interpreter,而不是 Firebase 的 ModelInterpreter wrapper:
https://firebase.google.com/docs/ml/ios/migrate-from-legacy-api
请尝试一下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.