繁体   English   中英

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

[英]Loading Python 2D ndarray into Android for inference on TFLite

我想在 TensorFlow Lite model 上测试推理,我已加载到 Android 项目中。

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

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

我需要某种方式来序列化这个 ndarray 并将其加载到 Android 中。

有关 TFLite 推理的更多信息,请参见此处 本质上,这应该是原始浮点数的多维数组,或 ByteBuffer。

最简单的方法是什么:

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

谢谢!

我最终发现了这一点,有一个方便的 Java 库,名为JavaNpy ,它允许您打开 Java 中的.npy 文件,因此是 ZE84E30B9390CDB64ZDB6.DB2C9AB87846

在 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 model 进行推理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM