我按照本教程的说明操作:
https://www.tensorflow.org/extend/adding_an_op#implement_the_gradient_in_python。
提供了以下评论:g++ -std=c++11 -shared zero_out.cc -o zero_out.so -fPIC -I$TF_INC -I$TF_INC/external/nsync/public -L$TF_LIB -ltensorflow_framework -O2
但链接器找不到-ltensorflow_framework
(它应该是tensorflow_frameowork.so文件!?)
经过一些研究,我找到了以下链接:
-l/pathto/tensorflow_framework.so
进行了关联,但仍找不到fatal error: tensorflow/core/framework/op_kernel.h: No such file or directory
。我试图递归搜索sudo find /usr/. -name "tensorflow_framework.so"
但我找不到任何东西。 Tensorflow肯定是通过anaconda安装的,我还从源代码克隆并编译了存储库。
如何找到包含-ltensorflow_framework
的方法?
答案 0 :(得分:2)
一个答案,我发现:
我已经通过anaconda2安装了我的python,当我激活我的存储库source activate <env>
时,我总是试图找出TF_INC和TF_LIB。并且找不到任何~/anaconda2/envs/tensorflow/lib/python2.7/site-packages/tensorflow
* .so文件
这次我使用shell命令source deactivate
走出每个python环境,然后输入以下命令
python -c 'import tensorflow as tf; print(tf.sysconfig.get_lib())'
现在,我得到了一条不同的路径:~/anaconda2/lib/python2.7/site-packages/tensorflow
,lib libtensorflow_framework.so
所在的路径。
答案 1 :(得分:2)
就我而言,文件libtensorflow_framework.so.1
存在于我的TF_LIB
目录中,而不是libtensorflow_framework.so
中。为了解决此问题,我必须创建一个符号链接,如下所示:
ln -s libtensorflow_framework.so.1 libtensorflow_framework.so
来源:Tensorflow NotFoundError: libtensorflow_framework.so: cannot open shared file or directory
答案 2 :(得分:0)
tensorflow_framework在Tensorflow 1.4.1之前不使用
当您从shell调用python时,请确保您正在调用正确的python:
TF_LIB = $(shell python -c'import tensorflow; print(tensorflow.sysconfig.get_lib())')
或
TF_LIB = $(shell python3 -c'import tensorflow; print(tensorflow.sysconfig.get_lib())')