我正在尝试使用Swig帮助构建围绕Tensorflow的 Ruby 包装器。目前,我坚持制作共享构建,并将其 C/C++ 标头暴露给 Ruby。所以问题是:如何构建一个包含完整 Tensorflow 库的共享构建,以便它可以作为 OSX El Capitan 上的共享库使用(注意:在 El Capitan 上是只读的)?.so
libtensorflow.so
/usr/lib/
背景
在这个ruby-tensorflow项目中,我需要打包一个 Tensorflow.bundle
文件,但是每当我irb -Ilib -rtensorflow
或尝试运行规范rspec
时,我都会收到错误,即基本数字类型未定义,但它们在这里明确定义。
我猜这是因为我的.so
-file 没有正确创建,或者某些东西没有按应有的方式链接。C++/Swig/Bazel 不是我的强项,我想专注于学习 Tensorflow 并在 Ruby 中构建一个好的包装器,但在这一点上我很难进入那个有趣的部分!
我做了什么:
git clone --recurse-submodules https://github.com/tensorflow/tensorflow
cd tensorflow
bazel build //tensorflow:libtensorflow.so
(在我的机器上等待 10-15 分钟)- 将生成的
libtensorflow.so
(166.6 MB)复制到-/ext
文件夹 - 运行项目中描述
ruby extconf.rb
的,make
, 和make install
- 跑
rspec
无奈之下,我也多次从源头进行官方安装,但我不知道最后sudo pip install /tmp/tensorflow_pkg/tensorflow-0.9.0-py2-none-any.whl
一步是否创建了共享构建或只是公开了一个 Python 接口。
制作原始存储库并按照我遵循的说明进行操作的人 Arafat说,他在他的 Linux 机器上libtensorflow.so
是4.5 GB - 所以超过我的 OSX 机器上共享构建的大小的 20 倍。UPDATE1:他说他的libtensorflow.so
-build 是302.2 MB, 4.5GB 是整个 tensorflow 文件夹的大小。
非常感谢任何帮助或替代方法!