【发布时间】:2016-11-08 04:35:32
【问题描述】:
我正在尝试使用Swig 帮助构建围绕Tensorflow 的Ruby 包装器。目前,我坚持制作共享构建.so,并将其 C/C++ 标头暴露给 Ruby。所以问题是:如何构建一个包含完整 Tensorflow 库的 libtensorflow.so 共享构建,以便它可以作为 OSX El Capitan 上的共享库使用(注意:/usr/lib/ 在 El Capitan 上是只读的)?
背景
在这个ruby-tensorflow 项目中,我需要打包一个Tensorflow .bundle 文件,但是每当我irb -Ilib -rtensorflow 或尝试运行规范rspec 时,我都会收到基本数字类型未定义的错误,但它们的定义很明确here。
我猜这是因为我的.so-file 没有正确创建,或者某些东西没有按应有的方式链接。 C++/Swig/Bazel 不是我的强项,我想专注于学习 Tensorflow 并在 Ruby 中构建一个好的包装器,但我在这一点上陷入了困境!
我做了什么:
git clone --recurse-submodules https://github.com/tensorflow/tensorflowcd tensorflow-
bazel build //tensorflow:libtensorflow.so(在我的机器上等待 10-15 分钟) - 将生成的
libtensorflow.so(166.6 MB) 复制到/ext-folder - 运行
ruby extconf.rb、make和make installdescribed in the project - 运行
rspec
无奈之下,我也翻了几次官方installation from source,但不知道是不是,最后sudo pip install /tmp/tensorflow_pkg/tensorflow-0.9.0-py2-none-any.whl-step 甚至创建了一个共享构建或者只是暴露了一个Python接口。
创建 original repository 并按照我遵循的说明进行操作的人 Arafat 说,他的 libtensorflow.so 在他的 Linux 机器上是 4.5 GB,因此是共享构建大小的 20 倍以上我的 OSX 机器。 UPDATE1:他说他的libtensorflow.so-build 302.2 MB,4.5GB 是整个 tensorflow 文件夹的大小。
非常感谢任何帮助或替代方法!
【问题讨论】:
标签: ruby macos tensorflow swig bazel