Android 执行Firebase ML任务时发生内部错误

Android 执行Firebase ML任务时发生内部错误,android,firebase,firebase-mlkit,Android,Firebase,Firebase Mlkit,我使用firebase ml kit对自定义tflite模型执行设备推断。 模型期望输入格式为类型:float32[1,71,37],输入格式为类型:float32[1,1,2] 我面临的问题是,当我在firebase模型解释器上调用run方法时,它失败并显示一条错误消息,告知“执行firebase ML任务时发生内部错误” 导入android.os.Bundle 导入android.util.Log 导入androidx.appcompat.app.appcompat活动 导入androidx

我使用firebase ml kit对自定义tflite模型执行设备推断。 模型期望输入格式为类型:float32[1,71,37],输入格式为类型:float32[1,1,2]

我面临的问题是,当我在firebase模型解释器上调用run方法时,它失败并显示一条错误消息,告知“执行firebase ML任务时发生内部错误”

导入android.os.Bundle
导入android.util.Log
导入androidx.appcompat.app.appcompat活动
导入androidx.lifecycle.ViewModelProvider
导入com.example.hack_ai_thon_android.R
导入com.google.android.gms.tasks.Task
导入com.google.firebase.ml.common.modeldownload.FirebaseModelDownloadConditions
导入com.google.firebase.ml.common.modeldownload.FirebaseModelManager
导入com.google.firebase.ml.custom*
类DashboardActivity:AppCompatActivity(){
lateinit变量解释器:FireBaseModel解释器
私有lateinit变量dashBoardViewModel:dashBoardViewModel
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_仪表板)
dashBoardViewModel=ViewModelProvider(this).get(dashBoardViewModel::class.java)
val surveyData=仪表板视图model.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=测量数据.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=测量数据.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=测量数据.comp编码
var ds=surveyData.dataStruct
var测试=调查数据。测试
val小时数=测量数据。小时数
var tech=surveyData.technicalClubsJoined
var extraC=调查数据。课外活动
var video=surveyData.videoTutorials
var documentation=surveyData.documentation
var online=surveyData.online课程
var techBlogs=surveyData.technicalBlogs
var softSkills=surveyData.softSkills和communication
val localModel=firebasecustlocalmodel.Builder()
.setAssetFilePath(“放置检测器.tflite”)
.build()
增值税=
FireBaseModelExplorations.Builder(localModel.build)()
解释器=FirebaseModel解释器.getInstance(解释器配置)!!
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输入=数组(1){
阵列(71){
浮动阵列(37)
}
}
//
val x=0
输入[batchNum][x][0]=sem1.toFloat()
输入[batchNum][x][1]=sem2.toFloat()
输入[batchNum][x][2]=sem3.toFloat()
输入[batchNum][x][3]=sem4.toFloat()
输入[batchNum][x][4]=sem5.toFloat()
输入[batchNum][x][5]=sem6.toFloat()
输入[batchNum][x][6]=sem7.toFloat()
输入[batchNum][x][7]=sem8.toFloat()
输入[batchNum][x][8]=c.toFloat()
输入[batchNum][x][9]=cpp.toFloat()
输入[batchNum][x][10]=java.toFloat()
输入[batchNum][x][11]=javaScript.toFloat()
输入[batchNum][x][12]=python.toFloat()
输入[batchNum][x][13]=kotlin.toFloat()
输入[batchNum][x][14]=html.toFloat()
输入[batchNum][x][15]=css.toFloat()
输入[batchNum][x][16]=php.toFloat()
输入[batchNum][x][17]=r.toFloat()
输入[batchNum][x][18]=db.toFloat()
输入[batchNum][x][19]=rest.toFloat()
输入[batchNum][x][20]=mobile.toFloat()
输入[batchNum][x][21]=mlAi.toFloat()
输入[batchNum][x][22]=web.toFloat()
输入[batchNum][x][23]=uiux.toFloat()
输入[batchNum][x][24]=cloud.toFloat()
输入[batchNum][x][25]=datasci.toFloat()
输入[batchNum][x][26]=comp.toFloat()
输入[batchNum][x][27]=ds.toFloat()
输入[batchNum][x][28]=testing.toFloat()
输入[batchNum][x][29]=hours.toFloat()
输入[batchNum][x][30]=技术toFloat()
输入[batchNum][x][31]=extraC.toFloat()
输入[batchNum][x][32]=video.toFloat()
输入[batchNum][x][33]=documentation.toFloat()
输入[batchNum][x][34]=online.toFloat()
输入[batchNum][x][35]=techBlogs.toFloat()
输入[batchNum][x][36]=softSkills.toFloat()
//
val inputs=FirebaseModelInputs.Builder()
.add(input)//add()模型所需的输入数组数
.build()
val任务:任务=解释器.run(输入,输入输出选项);
task.addOnSuccessListener{
val output=it.getOutput(0)
val概率1=输出[0]
Log.v(“LOGTAG2”,“概率1”)
}.addOnFailureListener{
Log.v(“LOGTAG2”,“错误:+it.message”)
}.添加
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()
        }

}
}