gpt4 book ai didi

java - 将 Python 2D ndarray 加载到 Android 以在 TFLite 上进行推理

转载 作者:行者123 更新时间:2023-12-04 15:10:59 26 4
gpt4 key购买 nike

我想在已加载到 Android 项目中的 TensorFlow Lite 模型上测试推理。

我有一些在 Python 环境中生成的输入,我想保存到文件中,加载到我的 Android 应用程序中并用于 TFLite 推理。我的输入有点大,一个例子是:

<class 'numpy.ndarray'>, dtype: float32, shape: (1, 596, 80)

我需要一些方法来序列化这个 ndarray 并将其加载到 Android 中。

可以找到有关 TFLite 推理的更多信息 here .本质上,这应该是原始 float 的多维数组,或 ByteBuffer。

什么是最简单的方法:

  • 在 Python 端序列化这个 ndarray
  • 在 Java 端从文件反序列化此 blob

谢谢!

最佳答案

我最后想通了,有一个方便的 Java 库叫做 JavaNpy这允许您在 Java 中打开 .npy 文件,因此在 Android 中也是如此。

在 Python 方面,我以正常方式保存了一个扁平化的 .npy:

data_flat = data.flatten()
print(data_flat.shape)
np.save(file="data.npy", arr=data_flat)

在 Android 中,我将其放入 assets 文件夹中。

然后我将它加载到 JavaNpy 中:

InputStream stream = context.getAssets().open("data.npy")
Npy npy = new Npy(stream);
float[] npyData = npy.floatElements();

最后将其转换为 TensorBuffer:

int[] inputShape = new int[]{1, 596, 80};   //the data shape before I flattened it
TensorBuffer tensorBuffer = TensorBuffer.createFixedSize(inputShape, DataType.FLOAT32);
tensorBuffer.loadArray(npyData);

然后我使用这个 tensorBuffer 对我的 TFLite 模型进行推理。

关于java - 将 Python 2D ndarray 加载到 Android 以在 TFLite 上进行推理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65203358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com