如何在Tensorflow(C ++)中创建和使用GrpcSession?可以改用Session或ClientSession API吗?

我目前正在开发在两个Tensorflow实例之间交换Tensors的代码-第一个实例是生产者,第二个实例是使用者。

经过一些研究,我决定使用FIFOQueue和GrpcSession。但是,关于GrpcSession的文档很少,我不确定如何正确使用它。我查看了Tensorflow存储库中的一些测试源代码(https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/distributed_runtime/rpc/grpc_session_test.cchttps://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/distributed_runtime/rpc/grpc_testlib.cc),但仍然担心我不了解GrpcSession生命周期。

当前,我在创建GraphSession时遇到问题。我已经编写了这样的代码:

    queue_root = Scope::Newrootscope();
    //defining a graph
    ...

    //creating a graph
    GraphDef graph_def; 
    TF_CHECK_OK(queue_root.ToGraphDef(&graph_def)); 

    SessionOptions opts;
    opts.target = "grpc://some_path:2222";

    std::unique_ptr<GrpcSession> session;
    TF_CHECK_OK(tensorflow::GrpcSession::Create(opts,&session));
    TF_CHECK_OK((session)->Create(graph_def));

不幸的是,链接器引发异常:

CMakeFiles/queue_trial.dir/queues_initializer.cpp.o: In function `QueueInitializer::fireEnqueue()':
queues_initializer.cpp:(.text+0x2685): undefined reference to `tensorflow::GrpcSession::Create(tensorflow::SessionOptions const&,std::unique_ptr<tensorflow::GrpcSession,std::default_delete<tensorflow::GrpcSession> >*)'

对于我来说,这似乎很奇怪-当我删除该行时

 TF_CHECK_OK(tensorflow::GrpcSession::Create(opts,&session));

该程序已成功编译(但是,当然,会话仍未初始化,因此在这种情况下会引发segfault)。因此,似乎所有必需的标头都已包含在内并且库已链接,但GrpcSession::Create仍未正确访问...

此错误的原因可能是什么?

我想知道是否存在更简单的解决方案。是否可以在使用Session API或ClientSession API创建的多个会话之间共享Tensorflow节点? 我非常感谢您的支持:-)

iy5678 回答:如何在Tensorflow(C ++)中创建和使用GrpcSession?可以改用Session或ClientSession API吗?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3162019.html

大家都在问