gpt4 book ai didi

ruby - 在 OSX El Capitan 上构建和链接共享的 Tensorflow 库以通过 Swig 从 Ruby 调用

转载 作者:数据小太阳 更新时间:2023-10-29 07:14:09 25 4
gpt4 key购买 nike

我正在尝试围绕 Tensorflow 构建一个 Ruby 包装器使用 Swig .目前,我一直致力于创建共享构建 .so,并将其 C/C++ header 公开给 Ruby。所以问题是:如何构建包含完整 Tensorflow 库的 libtensorflow.so 共享构建,以便它可以作为 OSX El Capitan 上的共享库使用(注意:/usr/lib/ 在 El Capitan 上是只读的)?

背景

在此ruby-tensorflow项目,我需要打包一个 Tensorflow .bundle 文件,但是每当我 irb -Ilib -rtensorflow 或尝试运行规范 rspec 时,我get 和错误,基本数字类型未定义,但已明确定义here .

我猜这是因为我的 .so 文件未正确创建或某些内容未按应有的方式链接。 C++/Swig/Bazel 不是我的强项,我想专注于学习 Tensorflow 并在 Ruby 中构建一个好的包装器,但我现在很难进入那个有趣的部分!

我做了什么:

  1. git clone --recurse-submodules https://github.com/tensorflow/tensorflow
  2. cd tensorflow
  3. bazel build//tensorflow:libtensorflow.so(在我的机器上等待 10-15 分钟)
  4. 将生成的 libtensorflow.so (166.6 MB) 复制到 /ext-folder
  5. 运行ruby extconf.rbmakemake install described in the project
  6. 运行rspec

无奈之下,我也通过了官方installation from source好几次,但我不知道最后一个 sudo pip install/tmp/tensorflow_pkg/tensorflow-0.9.0-py2-none-any.whl -step 甚至创建了一个共享构建或者只是公开了一个 Python 接口(interface)。

阿拉法特,他创造了 original repository并按照我所遵循的说明进行操作,他说他的 libtensorflow.so 在他的 Linux 机器上是 4.5 GB - 所以是我 OSX 机器上共享构建大小的 20 倍以上。 更新 1:他说他的 libtensorflow.so-build 是 302.2 MB,4.5GB 是整个 tensorflow 文件夹的大小。

非常感谢任何帮助或替代方法!

最佳答案

经过更多的挖掘,发现了 otool(感谢 Kristina)并更好地理解了 .so 是什么-file 是,解决方案不需要对我的设置进行太多更改:

共享构建

# Clone source files
git clone --recurse-submodules https://github.com/tensorflow/tensorflow
cd tensorflow
# Build library
bazel build //tensorflow:libtensorflow.so
# Copy the newly shared build/library to /usr/local/lib
sudo cp bazel-bin/tensorflow/libtensorflow.so /usr/local/lib

使用 Swig 从 Ruby 调用

按照此处的步骤操作,https://github.com/chrhansen/ruby-tensorflow#install-ruby-tensorflow , 要运行 Swig,请创建一个 Makefile 和 make

当您运行 make 时,您应该会看到一行内容:

$ make
$ linking shared-object libtensorflow.bundle

如果您的共享构建无法访问,您会看到类似以下内容:

$ ld: library not found for -ltensorflow

简单教程

对于那些开始在 Ruby 中使用 C/C++ 库的人来说,这篇文章对我来说是一个很好的教程:http://engineering.gusto.com/simple-ruby-c-extensions-with-swig/

关于ruby - 在 OSX El Capitan 上构建和链接共享的 Tensorflow 库以通过 Swig 从 Ruby 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38218691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com