tensorflow windows10,c++部署tensorflow代码

  tensorflow windows10,c++部署tensorflow代码

  tensorflow支持的最好的编程语言应该是python(应该说大多数深度学习框架支持的最好的语言是Python)。tensorflow底层说是用C/C写的,但是感觉真的对C/C不友好,关于Python的资料很多,关于C/C的很少,我能看到很多直接抄袭官网的可怜例子.因为我可能用C/C开发的比较多,有点希望用C/C API,所以有这个备注。

  好了,不说废话了。这里推荐一篇之前参考过的文章,写的很清楚,但是我觉得可能还是有点不准确,或者是我没有遇到的问题,或者不是我解决的方式。

  好了,废话不多说,直奔方法:

  1、需要准备的东西

  首先是软件:

  1)、CMake Gui,我这里用的是CMake 3.11.0,基本上3.0以上的都应该可以;VS2015(社区版免费,基本上还可以);

  2)、CUDA9.0和支持cudnn7(深度学习必备精品,如果用CPU就没必要了);

  3)、Anaconda,官网或者去清华镜像下载(python大蟒蛇的优秀工具,学习和使用深度学习技术应该还是有必要弄一个的);

  4)、swigwin-3.0.12(我不确定这是干什么用的,但很有用);

  5)、梯子(梯子可以解决我参考的博客中提到的一些问题,当然这些问题也可以用博客的方法解决);

  6)、源代码(我下载了tensorflow1.8,因为我电脑安装了tensorflow1.8 Python版本);

  7)、Git(这个很重要,编译时要下载的文件是通过Git);

  2Cmake源码

  默认安装以上材料和开发环境。蟒蛇很好对付。参考我之前的一个笔记,有很简单粗暴的方法,其他方法也很简单。基本上能找到N多本教程。然后解压下载的源代码,用Cmake GUI打开,从Cmake设置源代码路径和项目路径:

  然后按,左下角,配置项目,然后报错一个:

  这里因为没有设置SWIG的路径,所以SWIG可以在官网下载,解压后再添加到

  ,然后再次点击配置再次配置,然后修改部分项目。

  Tensorflow,如果你能连接到谷歌,你可以这样做:

  如果你不能连接到谷歌,这是它:

  如果没有GPU,也删除tensorflow_ENABLE_GPU。

  然后再次点击配置,对项目进行配置,如果没有错误,点击生成,生成项目。

  3VS2015编译

  用VS2015打开vs14_project/tensorflow.sln项目,整个项目Cmake出来274个冷傲的果汁:

  首先修改配置属性,改成x64下的Release(因为Anaconda的版本是发布的,没有调试,所以这里最好编译Release的版本。Debug可能会有错误,编译一个都快9G了,不想尝试编译Debug)。之后,我需要修改前五个文件的配置属性:

  配置完成后,修改文件tensor flow \ contrib \ boosted _ trees \ lib \ utils \ spare _ column _ iterable . cc,将第99~101行注释为:

  bool operator(constindicerowiterator other)const { q check _ LT(ITER _,other . ITER _);return(row _ idx _ other . row _ idx _);}

  然后右键单击该解决方案以生成解决方案。这个过程会超级长,因为下载的依赖很多,甚至有点卡。我查了任务管理器,主要消耗内存和CPU,CPU快满了。然后就会出现一个和tf_core_gpu_kernel有关的问题(看了错误,感觉应该和访问权限有关。我的CUDA和VS安装在c盘,应该会导致访问权限不足。目测就是这个原因)。此时关闭VS,然后以管理员身份运行VS2015,再打开tensorflow项目。然后点击编译解决方案(不要重新编译,直接点击编译,不然要花很多时间),然后这一项就编译了很久,久到我一度怀疑自己的人生。然后就是DT的事情。在编译tf_core_kernel的时候,很容易出现“编译器堆空间不足”,导致该项编译失败,然后就会出现其他问题。这时候重新编译项目就可以了,不用重新编译,然后就可以了。因为编译这一项的时候占用了大量的CPU,CPU都快满了,很容易出问题。

  基本上这样做了之后就可以编译通过了,但是我这边会有一个错误,和python API有关。我没有编译过tf_python_api,但还是报错了“cmd.exe”。可能跟我装过的tensorflow的Python版本有关吧。我没有具体查,因为这不是我的目的。况且我电脑上已经有Python版的tensorflow了,所以就忽略了,也不是很重要。

  下一步是打包头文件、lib文件和dll文件,在解决方案中找到安装项目,右键单独编译。编译完成后,会返回相关的头文件、lib文件、dll文件和exe文件(如果需要的话,可以找到我要打包的文件,这个编译要花相当多的时间)。

  编译好之后,做一点测试,看能不能用。

  4、测试

  首先,创建一个新的控制台应用程序,然后在项目中添加打包的头文件和lib文件的路径。代码如下:

  # include STD afx . h compiler _ MSVC # define nomin max # include vector # include Eigen/Dense # include tensor flow/core/public/session . h # include tensor flow/cc/ops/standard _ ops . h # include tensor flow/cc/ops/training _ ops . h # include tensor flow/core/framework/graph . Pb . h 使用命名空间tensor flow;graph def 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:mat mul:TransposeB(true));GraphDef defTF_CHECK_OK(根。ToGraphDef(def));返回def} int main(){ graph def graph _ def=CreateGraphDef();//启动会话SessionOptions选项;std:unique_ptrSession会话(new session(options));TF_CHECK_OK(会话创建(graph _ def));//定义一些数据。//这需要转换成一个本征张量//输入占位符。//注意,这将被分解成两个//长度为2的独立向量:[1,2]和[3,4],//它们将分别//与矩阵相乘。std:vectorfloat data={ 1,2,3,4 };auto mapped _ X _=Eigen:TensorMapEigen:tensor float,2,Eigen:RowMajor (data[0],2,2);auto Eigen _ X _=Eigen:tensor float,2,Eigen:row major(mapped _ X _);张量X_(DT_FLOAT,TensorShape({ 2,2 });X_。tensorfloat,2()=eigen _ X _;std:矢量传感器输出;TF_CHECK_OK(会话运行({ { x ,X_ } },{ y },{},输出));//得到结果并打印出来张量Y _=outputs[0];std:cout Y_。tensorfloat,2()STD:endl;会话关闭();getchar();返回0;}程序的输出信息如下:

  就像Python版本一样,会先显示一条系统和硬件信息,然后输出结果。代码中变量和函数的含义是什么,或者说如何用C开发一个tensorflow程序?以后再研究,Python版本写不好,所以还是要花点时间。

  给我一个我编译的CPU版本,Release,64位,版本1.8。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • ,,浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
  • ,,利用TensorFlow训练简单的二分类神经网络模型的方法
  • ,,Windows上安装tensorflow  详细教程(图文详解)
  • ,,tensorflow中的数据类型dtype用法说明
  • ,,python深度学习tensorflow1.0参数初始化initializer
  • linux下安装tensorflow,ubuntu安装tensorflow教程
  • conda安装tensorflow gpu,tensorflow gpu安装
  • tensorflow安装教程(anaconda的方式),anaconda安装tensorflow2.0
  • anaconda安装tensorflow1.14,anaconda安装tensorflow2.0
  • conda安装tensorflow,anaconda安装tensorflow2.0教程
  • ubuntu anaconda安装tensorflow,用anaconda安装tensorflow2.0
  • tensorflow1.0安装,TensorFlow2.0安装
  • 输出tensorflow版本代码,tensorflow打印变量
  • tensorflow安装命令,如何确定tensorflow是否安装成功
  • anaconda安装tensorflow gpu,anaconda装tensorflow
  • 留言与评论(共有 条评论)
       
    验证码: