gpt4 book ai didi

c++ - 无法读取已保存的TensorFlow模型(无法查找标题条目)

转载 作者:行者123 更新时间:2023-12-02 10:24:48 28 4
gpt4 key购买 nike

我正在尝试使用TensorFlow C++ API阅读SavedModel。该模型使用TF Python代码保存,并且我的模型目录具有以下结构:

saved_model.pb
variables
├── variables.data-00000-of-00001
└── variables.index

我设法在Ubuntu中使用以下代码成功读取了它:
tensorflow::LoadSavedModel(sessOpt, runOpt, modelDir, {tensorflow::kSavedModelTagServe}, &model);

但是,当我为Windows构建相同的代码时,它无法读取模型。这是TensorFlow的输出:
2017-07-25 16:16:15.112591: I C:\all\lib\serving\tensorflow\tensorflow\cc\saved_model\loader.cc:155]
Restoring SavedModel bundle.
2017-07-25 16:16:15.126391: W op_kernel.cc:1192]
Data loss: Unable to read file (C:/model/1/variables/variables.index).
Perhaps the file is corrupt or was produced by a newer version of TensorFlow with format changes (failed to seek to header entry): corrupted compressed block contents
2017-07-25 16:16:15.127325: W op_kernel.cc:1192]
Data loss: Unable to read file (C:/model/1/variables/variables.index).
Perhaps the file is corrupt or was produced by a newer version of TensorFlow with format changes (failed to seek to header entry): corrupted compressed block contents
...
Same lines over and over, 40 times in total
...
2017-07-25 16:16:15.162735: I C:\all\lib\serving\tensorflow\tensorflow\cc\saved_model\loader.cc:284] Loading SavedModel: fail. Took 80176 microseconds.

TensorFlow的版本完全相同,因此没有任何问题。错误在以下行的ctor BundleReader::BundleReader中发生:
iter_->Seek(kHeaderEntryKey);

这是将权重从文件系统还原到当前 session 的所有功能。 TF基本上运行 save/restore_all操作来加载权重。有趣的是,它是在我的计算机上有12个线程的线程池上完成的。由于有12个线程同时访问 variables.index文件,因此我知道Windows不喜欢这样的事情。

我尝试调整 LoadSavedModel函数的 session 选项:
sessionOpt.config.set_inter_op_parallelism_threads(1);
sessionOpt.config.set_intra_op_parallelism_threads(1);
sessionOpt.config.set_use_per_session_threads(1);

但是不幸的是,这似乎并没有改变任何东西。

有谁知道我还能尝试什么?我应该提交错误报告,还是代码有问题?

最佳答案

好的,我找到了罪魁祸首。事实证明,这与多线程问题无关。
tensorflow/contrib/cmake中提供的CMake构建脚本不支持SNAPPY压缩库,因此生成的应用程序无法解压缩我的模型。在将SNAPPY库添加到CMakeLists.txt后,它开始正常工作。

我很可能会尽快做出更改,以帮助其他遇到相同问题的人。

关于c++ - 无法读取已保存的TensorFlow模型(无法查找标题条目),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45304986/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com