深度学习模型部署加密

匿名 (未验证) 提交于 2019-12-03 00:19:01

url:https://blog.csdn.net/leozwang/article/details/79392628

保护模型文件不易于复制

默认情况下,您的模型将以磁盘上的标准序列化probuf格式存储。理论上这意味着任何人都可以复制你的模型,所以我经常被问及如何防止这种情况。在实践中,大多数模型都是特定于应用程序的,并且通过优化来混淆,风险类似于拆解和重新使用代码的竞争对手的风险。如果你想让临时用户更难访问你的文件,可以采取一些基本的步骤。 我们的大多数示例使用ReadBinaryProto便捷调用来从磁盘加载GraphDef。这一步需要磁盘上的未加密的protobuf。幸运的是,调用的实现非常简单,编写一个可以在内存中解密的等价物是很容易的。以下是一些代码,展示了如何使用自己的解密过程来读取和解密protobuf: ``` Status ReadEncryptedProto(Env* env, const string& fname, ::tensorflow::protobuf::MessageLite* proto) { string data; TFRETURNIF_ERROR(ReadFileToString(env, fname, &data)); DecryptData(&data); // Your own function here.

if (!proto->ParseFromString(&data)) { TFRETURNIF_ERROR(stream->status()); return errors::DataLoss("Can't parse ", fname, " as binary proto"); } return Status::OK(); } ```

void DecryptData(string * data){ for(int i = 0; i <data.size(); ++ i){ data [i] = data [i] ^ 0x23; } }

你可能想设计更复杂的算法,但这个不在我们的讨论之内。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!