使用Tensorflow 2.3 C ++加载模型时SessionOptions崩溃

问题描述

我已经编写了一个程序来加载模型。这个相同的模型文件正在加载tensorflow1.15,但是在tf 2.3崩溃并出现错误

*** Error in `./a.out': free(): invalid pointer: 0x00002b10ba7907c0 ***

下面提供了崩溃消息和回溯信息。

2020-11-05 20:31:55.295879: I tensorflow/cc/saved_model/reader.cc:31] Reading SavedModel from: /atom/model/30/1/model
2020-11-05 20:31:55.304575: I tensorflow/cc/saved_model/reader.cc:54] Reading Meta graph with tags { serve }
2020-11-05 20:31:55.304625: I tensorflow/cc/saved_model/loader.cc:234] Reading SavedModel debug info (if present) from: /atom/model/30/1/model
2020-11-05 20:31:55.322785: I tensorflow/core/platform/profile_utils/cpu_utils.cc:104] cpu Frequency: 2800270000 Hz
2020-11-05 20:31:55.323754: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x2c2b340 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-11-05 20:31:55.323783: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host,Default Version
2020-11-05 20:31:55.355104: I tensorflow/cc/saved_model/loader.cc:199] Restoring SavedModel bundle.
2020-11-05 20:31:55.465703: I tensorflow/cc/saved_model/loader.cc:183] Running initialization op on SavedModel bundle at path: /atom/model/30/1/model
2020-11-05 20:31:55.486363: I tensorflow/cc/saved_model/loader.cc:303] SavedModel load for tags { serve }; Status: success: OK. Took 190494 microseconds.
*** Error in `./a.out': free(): invalid pointer: 0x00002b10ba7907c0 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x81299)[0x2b10bb5b2299]
./a.out(_ZNSsD1Ev+0x62)[0x4723d2]
./a.out(_ZN10tensorflow14SessionoptionsD1Ev+0x2c)[0x433f08]
./a.out[0x4337bf]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x2b10bb553555]
./a.out[0x433545]
(gdb) bt
#0  0x00002aaaba446387 in raise () from /lib64/libc.so.6
#1  0x00002aaaba447a78 in abort () from /lib64/libc.so.6
#2  0x00002aaaba488ed7 in __libc_message () from /lib64/libc.so.6
#3  0x00002aaaba491299 in _int_free () from /lib64/libc.so.6
#4  0x00000000004723d2 in std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string() ()
#5  0x0000000000433f08 in tensorflow::Sessionoptions::~Sessionoptions() ()
#6  0x00000000004337bf in main ()

系统和内部版本信息

  • TF:使用proto 3.12(c ++ api)构建的v2.3
  • 操作系统:centos7
  • 开发环境:devtoolset-7
  • Bazel:3.5
  • 系统:具有Intel Cascade Lake Platform的Google云机

构建过程

  • 从github克隆v2.3。
  • 配置为与python2一起运行,并且没有任何其他选项。
  • 构建命令:BAZEL_LINKLIBS = -1%:libstdc ++。a bazel build -c opt --copt = -march = native --config = monolithic //tensorflow:libtensorflow_cc.so

发布构建步骤

  • sudo mkdir / usr / local / include / tensorflow
  • sudo cp -r bazel-bin / tensorflow / core / usr / local / include / tensorflow
  • sudo cp -r tensorflow / cc / usr / local / include / tensorflow /
  • sudo cp -r tensorflow / core / usr / local / include / tensorflow /
  • sudo cp -r third_party / usr / local / include /
  • sudo cp bazel-bin / tensorflow / libtensorflow_cc.so / usr / local / lib /

测试代码

模型文件夹位于tar文件中。我不包含提取代码


#include <tensorflow/cc/saved_model/loader.h>
#include <tensorflow/cc/saved_model/tag_constants.h>
// Load
using namespace tensorflow;
int main() {
        SavedModelBundle model_bundle;
        Sessionoptions session_options = Sessionoptions();
        Runoptions run_options = Runoptions();
        Status status = LoadSavedModel(session_options,run_options,"/atom/model/30/1/model",{"serve"},&model_bundle);
}

请帮助我了解问题所在以及如何解决

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)