小编Sus*_*Liu的帖子

如何从内部存储加载Tensorflow模型?

我想知道是否可以从 Android 设备的内部存储而不是资产文件夹中存储和读取经过训练的 .tflite 模型?

下面是从资产文件夹加载模型的原始代码(有效)。

private MappedByteBuffer loadLocalModelFile() throws IOException {
  AssetFileDescriptor fileDescriptor = getAssets().openFd(MODEL_PATH);
  FileInputStream inputStream = new FileInputStream(fileDescriptor.getFileDescriptor());
  long startOffset = fileDescriptor.getStartOffset();
  long declaredLength = fileDescriptor.getDeclaredLength();

  FileChannel fileChannel = inputStream.getChannel();
  return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法从内部存储器加载模型,并且仍然获取 fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength) 的 startOffset 和 declaredLength ?如果没有,有没有办法在从内部存储读取原始二进制文件时计算新模型的 startOffset 及其声明的长度?

我尝试使用 AssetManager 中的 openNonAssetFd() 函数来获取位于内部存储中的文件的 AssetFileDescriptor。

private MappedByteBuffer loadOnlineModelFile() throws IOException {
    FileInputStream inputStream = openFileInput(MODEL);

    AssetManager manager = getAssets();
    AssetFileDescriptor afd = manager.openNonAssetFd(getFilesDir() + "/graph.lite");

    long startOffset = afd.getStartOffset();
    long …
Run Code Online (Sandbox Code Playgroud)

java android tensorflow

3
推荐指数
1
解决办法
2474
查看次数

标签 统计

android ×1

java ×1

tensorflow ×1