我正在使用tensorflow c ++ api,并希望为变量赋值。但是,每当运行此代码时,我都会看到变量本身永远不会被变异。文档说这应该是可能的:
分配:通过为其指定'value'来更新'ref'。
以下是一些简化的代码:
Scope root = Scope::NewRootScope();
auto var = Variable(root, {1}, DT_DOUBLE);
auto assigned = Assign(root, var, Const(root, {1.0}));
ClientSession session(root);
session.Run({}, {assigned}, &out); // out[0] returns 1.0
session.Run({}, {var}, &out); // gives: Attempting to use uninitialized value Variable
答案 0 :(得分:2)
我能够解决我的问题。
简单的解决方案是:
Scope root = Scope::NewRootScope();
auto var = Variable(root, {1}, DT_DOUBLE);
auto assigned = Assign(root, var, Const(root, {1.0}));
ClientSession session(root);
// initialize first
session.Run({}, {}, {Operation(assigned.node())}, &out);
// now run
session.Run({}, {var}, &out);