Win10+VS2017的C++属性配置表

本人在tensorflow-r1.8.0的C++ API编译安装完毕后,写程序测试的时候一直会报一个错误

2019-08-16 13:59:01.528671: E D:\Tools\tensorflow\tensorflow\core\common_runtime\session.cc:69] Not found: No session factory registered for the given session options: {target: “” config: } Registered factories are {}.
Not found: No session factory registered for the given session options: {target: “” config: } Registered factories are {}.

上网找了,包括内网和外网,都说是要在VS2017属性管理器内的对应配置表内的链接器–》命令行加上以下内容
/machine:x64
/ignore:4049 /ignore:4197 /ignore:4217 /ignore:4221
/WHOLEARCHIVE:tf_cc.lib
/WHOLEARCHIVE:tf_cc_framework.lib
/WHOLEARCHIVE:tf_cc_ops.lib
/WHOLEARCHIVE:tf_core_cpu.lib
/WHOLEARCHIVE:tf_core_direct_session.lib
/WHOLEARCHIVE:tf_core_framework.lib
/WHOLEARCHIVE:tf_core_kernels.lib
/WHOLEARCHIVE:tf_core_lib.lib
/WHOLEARCHIVE:tf_core_ops.lib
/WHOLEARCHIVE:tf_stream_executor.lib
/WHOLEARCHIVE:libjpeg.lib
可是我无论如何编译都没有tf_stream_executor.lib这个文件,无奈修改为以下内容
/machine:x64
/ignore:4049 /ignore:4197 /ignore:4217 /ignore:4221
/WHOLEARCHIVE:tf_cc.lib
/WHOLEARCHIVE:tf_cc_framework.lib
/WHOLEARCHIVE:tf_cc_ops.lib
/WHOLEARCHIVE:tf_core_cpu.lib
/WHOLEARCHIVE:tf_core_direct_session.lib
/WHOLEARCHIVE:tf_core_framework.lib
/WHOLEARCHIVE:tf_core_kernels.lib
/WHOLEARCHIVE:tf_core_lib.lib
/WHOLEARCHIVE:tf_core_ops.lib
/WHOLEARCHIVE:libjpeg.lib
可是会报各种无法解析,或者是MD,MTD的问题,这个即使是修改了也是没用的,现在我将我的处理方法写下

解决方法
如果你已经把所有的lib文件都写在属性配置表里可还是报以下这个错误

D:\Tools\tensorflow\tensorflow\core\common_runtime\session.cc:69] Not found: No session factory registered for the given session options: {target: “” config: } Registered factories are {}.
Not found: No session factory registered for the given session options: {target: “” config: } Registered factories are {}.

那么建议你全部清掉,按照我的顺序来配置,本人一开始没有注意到链接是有顺序要求的,于是随心所欲的配置,结果怎么都解决不了我的问题。

我的tensorflow安装在".\tensorflow",请按照自己本机的地址进行相应的修改
VC++目录–》包含目录:
.\tensorflow
.\tensorflow\tensorflow\contrib\cmake\build
.\tensorflow\tensorflow\contrib\cmake\build\external\eigen_archive
.\tensorflow\third_party\eigen3
.\tensorflow\tensorflow\contrib\cmake\build\protobuf\src\protobuf\src
.\tensorflow\tensorflow\core
VC++目录–》库目录:
.\tensorflow\tensorflow\contrib\cmake\build\protobuf\src\protobuf\Release
.\tensorflow\tensorflow\contrib\cmake\build\tf_cc.dir\Release
.\tensorflow\tensorflow\contrib\cmake\build\tf_cc_ops.dir\Release
.\tensorflow\tensorflow\contrib\cmake\build\tf_cc_framework.dir\Release
.\tensorflow\tensorflow\contrib\cmake\build\tf_core_cpu.dir\Release
.\tensorflow\tensorflow\contrib\cmake\build\tf_core_direct_session.dir\Release
.\tensorflow\tensorflow\contrib\cmake\build\tf_core_framework.dir\Release
.\tensorflow\tensorflow\contrib\cmake\build\tf_core_kernels.dir\Release
.\tensorflow\tensorflow\contrib\cmake\build\tf_core_lib.dir\Release
.\tensorflow\tensorflow\contrib\cmake\build\tf_core_ops.dir\Release
.\tensorflow\tensorflow\contrib\cmake\build\Release
.\tensorflow\tensorflow\contrib\cmake\build
链接器–》输入
zlib\install\lib\zlibstatic.lib
gif\install\lib\giflib.lib
png\install\lib\libpng12_static.lib
jpeg\install\lib\libjpeg.lib
lmdb\install\lib\lmdb.lib
jsoncpp\src\jsoncpp\src\lib_json\Release\jsoncpp.lib
farmhash\install\lib\farmhash.lib
fft2d\src\lib\fft2d.lib
highwayhash\install\lib\highwayhash.lib
snappy\src\snappy\Release\snappy.lib
re2\src\re2\Release\re2.lib
nsync\install\lib\nsync.lib
sqlite\install\lib\sqlite.lib
tf_cc_while_loop.dir\Release\tf_cc_while_loop.lib
libprotobuf.lib
tf_protos_cc.lib
tf_cc.lib
tf_cc_ops.lib
tf_cc_framework.lib
tf_core_cpu.lib
tf_core_direct_session.lib
tf_core_framework.lib
tf_core_kernels.lib
tf_core_lib.lib
tf_core_ops.lib
链接器–》命令行
/machine:x64
/ignore:4049 /ignore:4197 /ignore:4217 /ignore:4221
/WHOLEARCHIVE:tf_cc.lib
/WHOLEARCHIVE:tf_cc_framework.lib
/WHOLEARCHIVE:tf_cc_ops.lib
/WHOLEARCHIVE:tf_core_cpu.lib
/WHOLEARCHIVE:tf_core_direct_session.lib
/WHOLEARCHIVE:tf_core_framework.lib
/WHOLEARCHIVE:tf_core_kernels.lib
/WHOLEARCHIVE:tf_core_lib.lib
/WHOLEARCHIVE:tf_core_ops.lib
/WHOLEARCHIVE:libjpeg.lib

别忘了在你的头文件加上
#pragma once
#define COMPILER_MSVC
#define NOMINMAX

测试代码
#include “pch.h”//或者是stdafx.h
#include
#include <eigen/Dense>
#include “tensorflow/core/public/session.h”
#include “tensorflow/cc/ops/standard_ops.h”

using namespace tensorflow;

// Build a computation graph that takes a tensor of shape [?, 2] and
// multiplies it by a hard-coded matrix.
GraphDef CreateGraphDef()
{
Scope root = Scope::NewRootScope();

auto X = ops::Placeholder(root.WithOpName(“x”), DT_FLOAT,
ops::Placeholder::Shape({ -1, 2 }));
auto A = ops::Const(root, { { 3.f, 2.f },{ -1.f, 0.f } });

auto Y = ops::MatMul(root.WithOpName(“y”), A, X,
ops::MatMul::TransposeB(true));

GraphDef def;
TF_CHECK_OK(root.ToGraphDef(&def));

return def;
}

int main()
{
GraphDef graph_def = CreateGraphDef();

// Start up the session
SessionOptions options;
std::unique_ptr session(NewSession(options));
TF_CHECK_OK(session->Create(graph_def));

// Define some data. This needs to be converted to an Eigen Tensor to be
// fed into the placeholder. Note that this will be broken up into two
// separate vectors of length 2: [1, 2] and [3, 4], which will separately
// be multiplied by the matrix.
std::vector data = { 1, 2, 3, 4 };
auto mapped_X_ = Eigen::TensorMap<Eigen::Tensor<float, 2, Eigen::RowMajor>>
(&data[0], 2, 2);
auto eigen_X_ = Eigen::Tensor<float, 2, Eigen::RowMajor>(mapped_X_);

Tensor X_(DT_FLOAT, TensorShape({ 2, 2 }));
X_.tensor<float, 2>() = eigen_X_;

std::vector outputs;
TF_CHECK_OK(session->Run({ { “x”, X_ } }, { “y” }, {}, &outputs));

// Get the result and print it out
Tensor Y_ = outputs[0];
std::cout << Y_.tensor<float, 2>() << std::endl;

session->Close();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值