Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.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
Android Tensorflow模型输出权重具有不同的值_Android_Tensorflow_Kotlin_Tensorflow Lite_Firebase Machine Learning - Fatal编程技术网

Android Tensorflow模型输出权重具有不同的值

Android Tensorflow模型输出权重具有不同的值,android,tensorflow,kotlin,tensorflow-lite,firebase-machine-learning,Android,Tensorflow,Kotlin,Tensorflow Lite,Firebase Machine Learning,我正在开发一个需要ML模型集成的Android应用程序。为此,我使用TensorFlow lite进行部署。我使用基于自定义模型的暹罗网络进行输出,输出形状为[1 128]。当我在Google Colab上推断python中的tf lite模型时,输出为[1 128]数字与我的Android设备上生成的数字不同。输入图像在推理和输入输出形状上都是相同的,但在我的Android手机和Python TFlite模型上得到的输出向量仍然不同。我正在使用Firebase机器学习 安卓代码 val i

我正在开发一个需要ML模型集成的Android应用程序。为此,我使用TensorFlow lite进行部署。我使用基于自定义模型的暹罗网络进行输出,输出形状为[1 128]。当我在Google Colab上推断python中的tf lite模型时,输出为[1 128]数字与我的Android设备上生成的数字不同。输入图像在推理和输入输出形状上都是相同的,但在我的Android手机和Python TFlite模型上得到的输出向量仍然不同。我正在使用Firebase机器学习

安卓代码

  val interpreter=Interpreter(model)
                  val imageBitmap= Bitmap.createScaledBitmap(BitmapFactory.decodeFileDescriptor(contentResolver.openFileDescriptor(fileUri,"r")?.fileDescriptor),256,256,true)
                  val inputImage=ByteBuffer.allocateDirect(256*256*3*4).order(ByteOrder.nativeOrder())
                  for(ycord in 0 until 256){
                      for(xcord in 0 until 256){
                          val pixel=imageBitmap.getPixel(xcord,ycord)
                          inputImage.putFloat(Color.red(pixel)/1.0f)
                          inputImage.putFloat(Color.green(pixel)/1.0f)
                          inputImage.putFloat(Color.blue(pixel)/1.0f)
                      }
                  }
                  imageBitmap.recycle()
                  val modelOutput=ByteBuffer.allocateDirect(outputSize).order(ByteOrder.nativeOrder())
                  interpreter.run(inputImage,modelOutput)
                  modelOutput.rewind()
                  val probs=modelOutput.asFloatBuffer()
                  success(ImageProcessResult.Success(probs))

请帮帮我。我很快就需要它。非常感谢您的帮助。您正在Android平台上将位图调整为[256256]


即使输入向量的微小变化也会改变输出向量。调整位图大小时,会更改输入向量。但是,如果模型足够通用,则最终结果(分类中的)输出向量的argmax将是相同的


就暹罗语而言,如果模型没有过度拟合,我相信它不会以有意义的方式影响最终结果(相似性分数)。

您能确认您输入模型的数值在两个平台上是相同的吗?你是调整图像大小、裁剪图像还是做其他事情?在Android上,我实际上是将位图大小调整为[256 256],但输入图像的尺寸与以前相同,所以我想这一定不重要,因为即使输入向量稍有变化也会改变输出向量。调整位图大小时,会更改输入向量。然而,最终结果是输出向量的argmax(在分类中)是相同的。好吧,但这不会影响我的暹罗输出吗?我相信如果模型没有过度拟合,它不会以有意义的方式影响最终结果。