user6456078
user6456078

Reputation:

What is the syntax to be used for feed_dict in TensorFlow C++?

I want to build and train a graph in TensorFlow C++ that consists of two layers, and to feed it with a given matrix as an input.

I have two different examples for the syntax:

The official C++ example (line # 129)

An old answer in StackOverflow

It seems they contradict each other with respect to the exact syntax of the "input" parameter to tensorflow::Session::Run()

Should it be "placeholder_name:0" or "placeholder_name"?

Upvotes: 3

Views: 277

Answers (1)

Allen Lavoie
Allen Lavoie

Reputation: 5808

Either one works. The name gets passed through ParseTensorName, where names without a colon are assumed to have an output index of 0. To verify this, we can add a ":0" to the end of the feed name in DirectSessionMinusAXTest::TestFeed:

std::vector<std::pair<string, Tensor>> inputs = {{x_, t}};

becomes

std::vector<std::pair<string, Tensor>> inputs = {{x_ + ":0", t}};

and it still passes.

The only case where passing an output index is required (more accurately the only case where it should be required; there may be some code lacking canonicalization) is if you're feeding a Tensor which is not the zeroth output of an operation (e.g. "unique:1"). This is quite rare, since constant and placeholder ops are the most likely feed targets and only have a single output.

Upvotes: 1

Related Questions