Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C+将输入输入输入到加载的Tensorflow模型中+; 我想创建和训练一个模型,导出它并在C++中运行推理。_Tensorflow - Fatal编程技术网

如何使用C+将输入输入输入到加载的Tensorflow模型中+; 我想创建和训练一个模型,导出它并在C++中运行推理。

如何使用C+将输入输入输入到加载的Tensorflow模型中+; 我想创建和训练一个模型,导出它并在C++中运行推理。,tensorflow,Tensorflow,我将遵循此处列出的教程: 我还尝试使用这里描述的SavedModel方法,因为这是导出TensorFlow图以提供以下服务的标准方法: 最后,我导出保存的模型,如下所示: feature_spec = tf.contrib.layers.create_feature_spec_for_parsing(feature_columns) serving_input_fn = input_fn_utils.build_parsing_serving_input_fn(feature_spe

我将遵循此处列出的教程:

我还尝试使用这里描述的SavedModel方法,因为这是导出TensorFlow图以提供以下服务的标准方法:

最后,我导出保存的模型,如下所示:

feature_spec = tf.contrib.layers.create_feature_spec_for_parsing(feature_columns)     
serving_input_fn = input_fn_utils.build_parsing_serving_input_fn(feature_spec)    
output = model.export_savedmodel(model_dir, serving_input_fn, as_text=True)                       
print('Model saved to {}'.format(output))                                         
我看到保存的_model.pbtxt具有以下签名定义

signature_def {
  key: "serving_default"
  value {
    inputs {
      key: "inputs"
      value {
        name: "input_example_tensor:0"
        dtype: DT_STRING
        tensor_shape {
          dim {
            size: -1
          }
        }
      }
    }
  outputs { 
  ...
我可以在C++侧

加载保存的模型
SavedModelBundle bundle;                                        

const std::string graph_path = "models/1498572863";            
const std::unordered_set<std::string> tags = {"serve"};         

Status status = LoadSavedModel(session_options,                        
                        run_options, graph_path,               
                        tags, &bundle);                         

您的模型签名表明它需要一个
DT_字符串
张量作为输入。使用
tensorflow::Example
时,这通常意味着需要将协议缓冲区序列化为一个以字符串作为元素类型的张量

要将
tensorflow::Example
对象转换为字符串,可以使用协议缓冲区方法,如


希望有帮助。

建议使用tensorflow::示例并序列化它。这类似于tensorflow/cc/saved_model/loader_test.cc中的方法。这似乎极不直观。。如何将序列化的tensorflow::示例转换为输入张量?谢谢。我做了这样的事情` tensorflow::示例;auto&tf_-feature_-map=*(例如.mutable_-features()->mutable_-feature());tf_feature_map[“name”]。可变_int64_list()->添加_值(15);const std::string&serialized=example.SerializeAsString();tensorflow::输入输入({序列化});status=bundle.session->Run({{“input\u example\u tensor”,input.tensor()}}}output\u tensor\u name,{},&outputs)`
std::vector<string> output_tensor_names = {
"binary_logistic_head/_classification_output_alternatives/classes_tensor"};

// How do I create input_tensor?
status = bundle.session->Run({{"input_example_tensor", input_tensor}}
    output_tensor_names, {}, &outputs);          
tensorflow::Example example;
auto& tf_feature_map = *(example.mutable_features()->mutable_feature());

tf_feature_map["name"].mutable_int64_list()->add_value(15);
const std::string& serialized = example.SerializeAsString();
tensorflow::Input input({serialized});

status = bundle.session->Run({{"input_example_tensor", input.tensor()}}
    output_tensor_names, {}, &outputs);