tensorflow c++ loading pbtxt

tensorflow c++ loading pbtxt

本文关键字:pbtxt loading c++ tensorflow      更新时间:2023-10-16

我在下面有以下代码:

#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <string.h>
#include <vector>
#include <sstream>
#include <typeinfo>
#include <sys/time.h>
#include "tensorflow/cc/client/client_session.h"
#include "tensorflow/cc/ops/standard_ops.h"
#include "tensorflow/core/framework/tensor.h"
#include "tensorflow/core/public/session.h"
#include "tensorflow/core/platform/env.h"
using namespace std;
using namespace tensorflow;
using namespace tensorflow::ops;
Session* session; // tensorflow session
Status status;  // tensorflow status
float get_prediction(Tensor a, Tensor b);
float get_prediction(Tensor a, Tensor b) {
float prediction;
vector<Tensor> outputs;
// preparing input
// TODO: Update this line
std::vector<std::pair<string, tensorflow::Tensor>> inputs = {{"inputlayer/inputxplaceholder", a}, {"inputlayer/targetyplaceholder", b}};
// getting prediction for test data
// TODO: Update this line
status = session->Run(inputs, {"output/pred"}, {}, &outputs);
if (!status.ok()) {
cout<<"Error@get_prediction: "<<status.ToString()<<"n";
return 1l;
}
prediction = outputs[0].scalar<float>()(0);
return prediction;
}
int main(int argc, char *argv[]) {
ifstream f;
string line = "";
string token = "";
float temp = 0.0;
int temp1 = 0;
float matches = 0.0, accuracy = 0.0;
int row_no=0, col_no=0;
float prediction = 0.0, actual = 0.0;
status = NewSession(SessionOptions(), &session);
if (!status.ok()) {
std::cout << status.ToString() << "n";
return 1;
}
GraphDef graph_def;
status = ReadTextProto(Env::Default(), "/home/usr/vector/res/usr/tensorflow/tensorflow/loader/mlp-32-1001.pbtxt", &graph_def);
if (!status.ok()) {
std::cout << status.ToString() << "n";
return 1;
}
status = session->Create(graph_def);
if (!status.ok()) {
std::cout << status.ToString() << "n";
return 1;
}
session->Run({}, {}, {"init_all_vars_op"}, nullptr);
auto inputX = Tensor(DT_FLOAT, TensorShape({1,14}));
auto inputY = Tensor(DT_FLOAT, TensorShape({1}));
f.open("/home/usr/vector/res/usr/tensorflow/tensorflow/loader/signals_p.csv"); //processed csv
getline(f,line);
while(getline(f, line)) {
/*if (row_no == 0) {
row_no += 1;
continue;
}*/
istringstream iss(line);
while(getline(iss, token, ',')) {
// filling feature tensors
if((col_no >= 3 && col_no <= 14) || col_no == 21 || col_no == 22) {
temp = stod(token.c_str());
int index;
if (col_no >= 3 && col_no <= 14)
index = col_no - 3;
else if (col_no == 21)
index = 12;
else
index = 13;
inputX.matrix<float>()(0,index) = temp;
}
// filling label tensor
if(col_no == 16) {
temp1 = stof(token.c_str());
actual = temp1;
inputY.vec<float>()(0) = temp1;
}
col_no += 1;
}
col_no = 0;
row_no += 1;
// getting prediction
prediction = get_prediction(inputX, inputY);
// if actual and prediction matches, increment matches
if(actual == prediction)
matches += 1;
}
accuracy = matches / (row_no);
cout<<"Total Rows: "<<(row_no)<<endl;
cout<<"Accuracy: "<<accuracy<<endl;
//session->Close();
return 0;
}

我在下面收到以下错误:

Error@get_prediction: Failed precondition: Attempting to use uninitialized value output/bias
[[{{node output/bias/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](output/bias)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value output/bias
[[{{node output/bias/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](output/bias)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value output/bias
[[{{node output/bias/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](output/bias)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value output/bias
[[{{node output/bias/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](output/bias)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value output/bias
[[{{node output/bias/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](output/bias)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value output/bias
[[{{node output/bias/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](output/bias)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value output/bias
[[{{node output/bias/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](output/bias)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/bias
[[{{node hlayer01/bias/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/bias)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/bias
[[{{node hlayer01/bias/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/bias)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/bias
[[{{node hlayer01/bias/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/bias)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value output/bias
[[{{node output/bias/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](output/bias)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/bias
[[{{node hlayer01/bias/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/bias)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value output/bias
[[{{node output/bias/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](output/bias)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value output/weight
[[{{node output/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](output/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/bias
[[{{node hlayer01/bias/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/bias)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/bias
[[{{node hlayer01/bias/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/bias)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/weight
[[{{node hlayer01/weight/read}} = Identity[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](hlayer01/weight)]]
Error@get_prediction: Failed precondition: Attempting to use uninitialized value hlayer01/bias

我需要加载检查点吗?我做错了什么吗?下面的错误来自我的 .pbtxt 文件中的节点,我可以说它们尚未初始化,但我认为这就是 session->Run({}, {}, {"init_all_vars_op"}, nullptr(;是为了。谢谢!

想通了 - 您需要使用以下代码加载检查点:

/* restore model from checkpoint, iff checkpoint is given */
if (checkpoint_fn != "") {
const std::string restore_op_name = graph_def.saver_def().restore_op_name();
const std::string filename_tensor_name =
graph_def.saver_def().filename_tensor_name();
tensorflow::Tensor filename_tensor(tensorflow::DT_STRING,
tensorflow::TensorShape());
filename_tensor.scalar<std::string>()() = checkpoint_fn;
tensor_dict feed_dict = {{filename_tensor_name, filename_tensor}};
status = sess->Run(feed_dict, {}, {restore_op_name}, nullptr);
if (status != tensorflow::Status::OK()) return status;
} 
else {
status = sess->Run({}, {}, {"init"}, nullptr);
if (status != tensorflow::Status::OK()) return status;
}
return tensorflow::Status::OK();