首页 文章

在Tensorflow C API中初始化变量

提问于
浏览
0

我找不到在Tensorflow的C API中初始化变量的工作方法 . 我正在尝试为MNIST数据集 Build 一个基本的完全连接的单层神经网络 .

目前,我发现正确的方法是这样的:

TF_CHECK_OK(session->Run({}, {}, {"init_all_vars_op"}, nullptr));

但是,使用它会返回以下错误:

tensorflow/cc/example/example.cc:178:71: error: no matching function for call to 'tensorflow::ClientSession::Run(<brace-enclosed initializer list>, <brace-enclosed initializer list>, <brace-enclosed initializer list>, std::nullptr_t)' .

有没有人遇到过这个?如果你这样做了,你是如何解决的?

编辑:我应该补充说,如果我删除任何初始化我使用的变量的尝试,只是运行会话它将编译,但它返回:

2017-06-27 11:31:12.861244:W tensorflow / core / platform / cpu_feature_guard.cc:45] TensorFlow库未编译为使用SSE4.1指令,但这些指令可在您的计算机上使用并且可以加速CPU计算 . 2017-06-27 11:31:12.862007:W tensorflow / core / platform / cpu_feature_guard.cc:45] TensorFlow库未编译为使用SSE4.2指令,但这些指令可在您的计算机上使用,可以加速CPU计算 . 2017-06-27 11:31:12.862433:W tensorflow / core / platform / cpu_feature_guard.cc:45] TensorFlow库未编译为使用AVX指令,但这些指令可在您的计算机上使用,并可加速CPU计算 . 2017-06-27 11:31:12.866282:F tensorflow / cc / example / example.cc:180]非OK状态:session->运行(feed,和输出)状态:失败的前提条件:尝试使用未初始化的值权重[[Node:MatMul = MatMul [T = DT_FLOAT,transpose_a = false,transpose_b = false,_device =“/ job:localhost / replica:0 / task:0 / cpu:0”](_ arg_x_0_0,权重) ]] / usr / bin / bazel退出代码8

2 回答

  • 1

    我设法找到一个只能在变量的初始状态不重要的环境中工作的解决方案 . 您可以使用Assign方法最初为变量赋值0,因为Assign不要求在事先初始化变量 . 这个初始化应该在列车循环之前完成:

    auto init_value = Const(root, 0);
    
    auto assign = Assign(root.WithOpName("assign"), var, init_value);
    

    我还没有在这个代码片段上运行测试,但它在我当前的源代码中编译 .

  • 0

    看起来代码没有使用对session.run的调用进行编译 . 这可能是由于有问题的类型推断,因为tensorflow :: ClientSession :: Run被许多不同的签名重载 . 尝试使用显式类型名称替换 {} 初始值设定项 .

相关问题