C++ 如何用c+检查tensorflow图(协议缓冲区)的节点名+;

C++ 如何用c+检查tensorflow图(协议缓冲区)的节点名+;,c++,tensorflow,protocol-buffers,C++,Tensorflow,Protocol Buffers,我想检查加载图是否正确 我用python保存学习的协议缓冲区文件。 并且,我通过C++加载协议缓冲文件。 但是当会话运行时,我无法获得输出张量 我想输出并检查图形信息 用python保存代码 with tf.Graph().as_default() as graph: input_data = tf.placeholder(tf.float32, shape=train_data.shape, name="input") keep_prob = tf.placeholder(tf

我想检查加载图是否正确

我用python保存学习的协议缓冲区文件。 并且,我通过C++加载协议缓冲文件。 但是当会话运行时,我无法获得输出张量

我想输出并检查图形信息

用python保存代码

with tf.Graph().as_default() as graph:
    input_data = tf.placeholder(tf.float32, shape=train_data.shape, name="input")
    keep_prob = tf.placeholder(tf.float32)

    answer = net.inference(input_data, units, io_data_dim, keep_prob, output_net=True)
    saver = tf.train.Saver()

    with tf.Session() as sess:

        # Load model file
        sess.run(tf.initialize_all_variables())
        ckpt = tf.train.get_checkpoint_state(ckpt_dir_name)
        if ckpt: # checkpoint is exist
            last_model = ckpt.model_checkpoint_path # last model path
            saver.restore(sess, last_model)
        else:
            print("There is no training network...")
            exit()

        # check the saveing graph
        for v in sess.graph.get_operations():
            print(v.name)

        graph_def = graph_util.convert_variables_to_constants(sess, graph.as_graph_def(), ['output_lay/output_lay'])

        tf.train.write_graph(graph_def, '.', pb_name, as_text=False)
用C++加载代码

Status LoadGraph(string graph_file_name, std::unique_ptr<tensorflow::Session>* session) {
    tensorflow::GraphDef graph_def;
    Status graph_status = ReadBinaryProto(tensorflow::Env::Default(), graph_file_name, &graph_def);
    if (!graph_status.ok())
    {
        return graph_status;
    }
    session->reset(tensorflow::NewSession(tensorflow::SessionOptions()));
    Status create_status = (*session)->Create(graph_def);
    if (!create_status.ok())
    {
        return create_status;
    }
    return Status::OK();
}
状态加载图(字符串图\u文件\u名称,std::unique\u ptr*会话){
tensorflow::GraphDef graph_def;
状态图\u Status=ReadBinaryProto(tensorflow::Env::Default()、图形文件名和图形定义);
如果(!graph_status.ok())
{
返回图形_状态;
}
会话->重置(tensorflow::NewSession(tensorflow::SessionOptions());
状态创建\状态=(*会话)->创建(图形定义);
如果(!create_status.ok())
{
返回创建_状态;
}
返回状态::OK();
}
用c++运行代码

Status LoadGraph(string graph_file_name, std::unique_ptr<tensorflow::Session>* session) {
    tensorflow::GraphDef graph_def;
    Status graph_status = ReadBinaryProto(tensorflow::Env::Default(), graph_file_name, &graph_def);
    if (!graph_status.ok())
    {
        return graph_status;
    }
    session->reset(tensorflow::NewSession(tensorflow::SessionOptions()));
    Status create_status = (*session)->Create(graph_def);
    if (!create_status.ok())
    {
        return create_status;
    }
    return Status::OK();
}
输入\u节点\u name=“输入”

output\u node\u name=“output\u lay/output\u lay”

状态推断(std::unique_ptr*会话,
tensorflow::Tensor*输入,
字符串*输入节点名称,
字符串*输出节点名称,
tensorflow::Tensor*输出)
{
tensorflow::Tensor input_object=*input;
//输入
//我在这里没有信心
tensorflow::Tensor keep_prob(tensorflow::DT_FLOAT,tensorflow::TensorShape());
保持_prob.scalar()()=1.0;
标准::矢量输入={
{“占位符”,保留{u prob},
{*input\节点\名称,*input}
};
//输出
向量输出;

STD::你的C++ C++代码中的一些代码。更新日期结果Logi通过读取结果消息来解决。保存代码L2:“Stult= TrimeDeal.Dead”形状不正确。我将它固定到“Stase=(No.TrimeDea.Stand)”。你知道如何在C++中获取节点名吗?