简体   繁体   中英

How to invoke tf.initialize_all_variables() in C++? tensorflow

I'm newbie in tensorflow. Btw, how to execute ops in C++ such as tf.initialize_all_variables() or some ops returned by optimizers self.train_op = self.optimizer.apply_gradients(gradients) ? I've tried

init_all_vars_op = tf.initialize_variables(tf.all_variables(), name='init_all_vars_op')
...
tf.train.write_graph(session.graph_def, 'models/', 'graph.pb', as_text=False)

in python and then in C++:

status = session->Run(inputs, {"init_all_vars_op"}, {}, &outputs);
if (!status.ok()) {
    std::cout << "tf error: " << status.ToString() << "\n";
    return;
}

so I got

tf error: Invalid argument: FetchOutputs init_all_vars_op: output index too large, must be < 0

I've changed

status = session->Run(inputs, {"init_all_vars_op"}, {}, &outputs);

to

status = session->Run(inputs, {}, {"init_all_vars_op"}, &outputs);

And now it works fine.

According to https://www.tensorflow.org/versions/master/api_docs/cc/ClassSession.html#virtual_Status_tensorflow_Session_Run Second parameter is for operations which returns output tensors and third for operations which don't return tensors.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM