gpt4 book ai didi

c++ - TensorFlow c++ API 在 session->run() 上崩溃

转载 作者:太空狗 更新时间:2023-10-29 23:11:06 24 4
gpt4 key购买 nike

我正在编写一个 Tensorflow C++ 代码来检查我在服务器上收到的一系列图像是否属于“真”类别或“假”类别。我已经使用 python 训练了模型并为模型生成了一个 .pb 文件。

现在我将模型加载到 C++ 中,并使用以下代码将图像从我从连接接收到的 vector 传递给它:

for (int iLSP = 0; iLSP < LSPs.size(); iLSP++)
{
Mat image1 []= {LSPs[iLSP], LSPs[iLSP], LSPs[iLSP]};
Mat image;
merge(image1,3,image);
image.convertTo(image, CV_32FC1);
image = image / 255.0;
resize(image, image, Size(Width, Height));

Tensor image_tensor(DT_FLOAT, TensorShape({1,Width,Height,3}));
StringPiece tmp_data = image_tensor.tensor_data();
memcpy(const_cast<char*>(tmp_data.data()), (image.data), Height * Width * sizeof(float));

Session *sess;
SessionOptions options;
TF_CHECK_OK(NewSession(options, &sess));
GraphDef graph_def;
TF_CHECK_OK(ReadBinaryProto(Env::Default(), "models/model.pb", &graph_def));
TF_CHECK_OK(sess->Create(graph_def));

std::vector<std::pair<string, tensorflow::Tensor>> inputs = {{"x", image_tensor }};
std::vector<tensorflow::Tensor> outputs;

Status status = sess->Run(inputs, {"y_pred"}, {}, &outputs);
if (!status.ok())
{
cout<<"Error: "<<status.ToString()<<endl;
}
auto output_mapped = outputs[0].tensor<float, 2>();
totalFalse += output_mapped(0);
totalTrue += output_mapped(1);
sess->Close();
image.release();
}

代码编译并运行。问题是在多次连接到服务器并接收到多个图像序列后,代码崩溃而没有任何错误输出或崩溃原因的指示(甚至不是段错误)。

在每一行上执行“cout”以检查代码崩溃的位置,显然它发生在以下行中:

Status status = sess->Run(inputs, {"y_pred"}, {}, &outputs);

为什么要调试 sess->run 中发生的事情?因为代码甚至没有填充状态变量来获得一个想法!。还有一种方法可以从 session 运行中抛出异常吗?正如我已经提到的,这将是一个服务器代码,至少如果 session ->运行不工作,我可以在保持程序运行的同时捕获异常,而不会使整个服务器崩溃

最佳答案

exit()_exit()terminate() 函数上设置断点并运行代码。

关于c++ - TensorFlow c++ API 在 session->run() 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51998206/

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