首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >固定tensorflow-lite模型

固定tensorflow-lite模型
EN

Stack Overflow用户
提问于 2019-07-09 12:03:43
回答 1查看 685关注 0票数 0

我正在开发一个Android应用程序,它将保存一个tensorflow-lite模型,用于离线推理。

我知道要完全避免有人偷我的模型是不可能的,但我想让一个尝试它的人感到很困难。

我想把我的.tflite模型保留在.apk中,但是没有顶层的权重。然后,在执行时,我可以下载最后一层的权重并将其加载到内存中。

所以,如果有人想偷我的模型,他会得到一个无用的模型,因为它不能使用,因为丢失了最后一层的权重。

  1. 如果没有最后一层的权重,就有可能生成一个tflite模型?
  2. 是否有可能将这些权重加载到内存中已经加载的模型中?

我就是这样加载我的.tflite模型的:

代码语言:javascript
复制
    tflite = new Interpreter(loadModelFile(), tfliteOptions);

    // loads tflite grapg from file
    private MappedByteBuffer loadModelFile() throws IOException {
        AssetFileDescriptor fileDescriptor = mAssetManager.openFd(chosen);
        FileInputStream inputStream = new FileInputStream(fileDescriptor.getFileDescriptor());
        FileChannel fileChannel = inputStream.getChannel();
        long startOffset = fileDescriptor.getStartOffset();
        long declaredLength = fileDescriptor.getDeclaredLength();
        return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength);
    }
  1. 还有其他方法让我的模型更安全吗?我真的需要在本地进行推理。
EN

回答 1

Stack Overflow用户

发布于 2019-07-09 15:35:03

如果我们讨论的是Keras模型(或者TF中的任何其他模型),我们可以轻松地删除最后一层,然后用tf.lite.TFLiteConverter将其转换为TF模型。这不应该是个问题。

现在,在Python中,获取最后一层的权重,并将其转换为一个很好的JSON文件。这个JSON文件可以托管在云上(比如),并且可以被应用程序下载。

权重可以解析为array()对象。TF模型的活动可以与JSON解析的权重相乘。最后,我们应用一个激活来提供预测,这是我们确实需要的!

该模型经过如此精确的训练,很少用于任何其他用例。因此,我认为我们无须担心这个问题。

另外,如果我们使用一些使用请求和API而不是直接加载原始模型的云托管平台,情况会更好。

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

https://stackoverflow.com/questions/56952190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档