当前位置: 首页 > 知识库问答 >
问题:

如何在Android中从我的Tensorflow Lite模型中传递输入并获取输出

申辉
2023-03-14

当我将张量流精简模型添加到我的Android应用程序时。它建议自动生成的代码。

val model = Model.newInstance(context)

// Creates inputs for reference.
val inputFeature0 = TensorBuffer.createFixedSize(intArrayOf(1, 50), DataType.FLOAT32)
inputFeature0.loadBuffer(byteBuffer)

// Runs model inference and gets result.
val outputs = model.process(inputFeature0)
val outputFeature0 = outputs.outputFeature0AsTensorBuffer

// Releases model resources if no longer used.
model.close()

现在让我们假设我在python中的输入形状是一个50数字[1,2,3...]的int数组,它给出了一个浮点值的输出。

我必须以何种方式更改代码。

共有1个答案

乌学博
2023-03-14

您将使用bytebuffer以little endian格式存储输入(因为tflite仅适用于此格式)。将(1 x 4)替换为50 x 4,对于输入,使用len 50循环添加数据。类似地,使用循环操作输出。

示例代码

                EditText inputEditText;

                inputEditText = findViewById(R.id.editTextNumberDecimal);
                Float data= Float.valueOf(inputEditText.getText().toString());
                ByteBuffer byteBuffer= ByteBuffer.allocateDirect(1*4);
                byteBuffer.order(ByteOrder.nativeOrder()); // ensure little endian
                byteBuffer.putFloat(data);

                Model1 model = Model1.newInstance(getApplicationContext());

                // Creates inputs for reference.
                TensorBuffer inputFeature0 = TensorBuffer.createFixedSize(new int[]{1, 1}, DataType.FLOAT32);
                inputFeature0.loadBuffer(byteBuffer);

                // Runs model inference and gets result.
                Model1.Outputs outputs = model.process(inputFeature0);
                TensorBuffer outputFeature0 = outputs.getOutputFeature0AsTensorBuffer();

                // Releases model resources if no longer used.
                TextView tv= findViewById(R.id.textView);
                float[] data1=outputFeature0.getFloatArray();

                tv.setText(outputFeature0.getDataType().toString());
                tv.setText(String.valueOf(data1[0]));


                model.close();
 类似资料:
  • 我用Tensorflow培训了一个模型(更快的rcnn\U resnet101\U coco\U 2018\U 01\U 28)。我有一个“.pb”图形。 要制作一个冻结图,我需要输入和输出节点。 如何在图表中找到它? 我这里有完整的节点列表。 没有任何节点像Softmax,占位符,因为它在其他帖子中建议。

  • 我有一个模型对象中的数据,我想把它放在我的Thymeleaf模板的输入字段中,这样,如果值为null,就不会显示任何内容,否则,输入将包含该值。我试过了,但没用。 我将这些值传递到java异常处理程序中的模型对象中,如下所示: 如何从我在my thymeleaf模板中的模型中传递的accountInfo对象中获取属性? 更新:现在它正在工作,但不是第一次在没有模型对象的情况下访问页面。代码如下:

  • 我有一个EXE文件,< code>addOne.exe,它不断地从控制台上的用户获得一个整数输入(不是命令行参数),并将整数1输出到控制台上。示例输出如下所示: 我正在尝试编写一个java程序,它可以: 运行 EXE 使用 从 Java 程序持续获取用户输入,并将输入到 EXE 作为控制台输入 每当 EXE 将文本输出到控制台时,请从 Java 程序打印该文本 我可以使用以下方式运行EXE: 但我

  • 问题内容: 我正在尝试创建一个基本菜单,以检查输入的变量是否与定义的变量匹配。如果定义了变量,则获取已定义变量的数据。 例。 我输入 应该相等 问题答案: 这似乎是您要找的东西: 但是,这可能不是最好的策略,因为错字或恶意用户很容易使您的代码崩溃,系统过载或执行他们喜欢的任何其他讨厌的事情。对于这种特殊情况,更好的方法可能是

  • 问题内容: 如何在输入框中获取输入框中的值? 问题答案: 每次释放键都会触发onkeyup。虽然它看起来是解决方案,但它仍然存在一些问题。 如果用户使用箭头移动光标,则会触发该光标,并且您必须检查自己是否字段值没有更改。 如果用户使用鼠标在输入字段中复制/粘贴一个值,或者在浏览器中单击“撤消/重做”,则不会触发。 就像在Mac或Google文档中一样,我不想保存按钮来在我们的应用程序中提交表单,这