tensorflow窗口创建自己的插件

时间:2017-09-04 23:30:13

标签: windows tensorflow

我已经使用visual studio 2015从源代码中成功构建了windows 10的tensorflow + gpu。

因此,我得到tensorflow.dlltensorflow.lib。 我有CUDA8.0cudnn 5.0;配备了gtx 1080 gpu。

但是,我的问题不是建立和编译张量流。 它是关于创建张量流插件的。

我按照tutorial构建了我自己的"插件"。 然后我试着编译一个windows .dll;所以windows不会自动为我导出符号。 然后我先编译一个静态库并使用你的工具

/tensorflow/contrib/cmake/tools/create_def_file.py

为我创建一个.def文件,并最终用它来编译.dll

然而,在我的python代码中,当我尝试

correlation = tf.load_op_library(correlation.dll) 

我打电话给

correlation.correlation()

使用REGISTER_OP("Correlation")注册了相关性; 它仍然告诉我

  

AttributeError:module' 7b088d8b906b36d3e50721b0adbaaa6a'没有属性相关'

我认为这只是一个windows(或cl编译器)问题,也许REGISTER_OP(" Correlation")所做的事情并没有被编译器选中,

所以我有什么办法可以在Windows上实现这个目的吗?

1 个答案:

答案 0 :(得分:0)

Windows不支持通过tf.load_op_library()加载自定义op库(至少使用TensorFlow 1.8)。 解决方法是将自定义op添加到TensorFlow库本身。 按照tensorflow \ tensorflow \ core \ user_ops \ fact.cc中实现的tf.user_ops.my_fact示例:

  1. 将您的C ++实现放在tensorflow \ tensorflow \ core \ user_ops
  2. 在tensorflow \ tensorflow \ python \ user_ops
  3. 中添加python绑定
  4. 编译TensorFlow(阅读https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/cmake
  5. 用您的Conda环境替换tensorflow目录 tensorflow \ tensorflow \的contrib \ cmake的\建立\ tf_python \ tensorflow
  6. 您的新操作系统将导入tf.user_ops