首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将Python2D ndarray加载到Android中,以便在TFLite上进行推理

将Python2D ndarray加载到Android中,以便在TFLite上进行推理
EN

Stack Overflow用户
提问于 2020-12-08 08:55:39
回答 1查看 553关注 0票数 3

我想测试一下我加载到一个安卓项目中的TensorFlow Lite模型的推断。

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

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

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

有关TFLite推理的更多信息可以找到这里。本质上,这应该是一个多维度的原始浮点数数组,或者一个ByteBuffer。

最简单的方法是:

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

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-09 07:53:56

最后,我发现了一个名为JavaNpy的方便的Java库,它允许您在Java中打开.npy文件,从而使用Android。

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

代码语言:javascript
运行
AI代码解释
复制
data_flat = data.flatten()
print(data_flat.shape)
np.save(file="data.npy", arr=data_flat)

在安卓系统中,我把这个放在assets文件夹中。

然后我将其加载到JavaNpy中:

代码语言:javascript
运行
AI代码解释
复制
InputStream stream = context.getAssets().open("data.npy")
Npy npy = new Npy(stream);
float[] npyData = npy.floatElements();

并最终将其转换为一个TensorBuffer:

代码语言:javascript
运行
AI代码解释
复制
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模型。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65203358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文