Как сделать керам в R использовать тензорный поток, установленный Python

Я уже выполнил установку тензорного потока с помощью следующей команды:

pip install --ignore-installed https://github.com/mind/wheels/releases/download/tf1.5-gpu-cuda91-nomkl/tensorflow-1.5.0-cp27-cp27mu-linux_x86_64.whl

Это новейшее колесо с тензором, предназначенное для CUDA 9.1. (В 3 раза быстрее, чем CUDA 8.0)

И я могу назвать это успешно в моем коде на Python.

Как я могу сделать keras в R, чтобы вызвать tenorflow, установленный python выше? Причина, по которой я спросил, потому что я использую метод установки по умолчанию

keras::install_keras(method="conda", tensorflow = "gpu")

Он не смог распознать библиотеку cuda-9.1.

> conv_base <- keras::application_vgg16(
+   weights = "imagenet",
+   include_top = FALSE,
+   input_shape = c(150, 150, 3)
+ )
/home/ubuntu/anaconda2/envs/r-tensorflow/lib/python2.7/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from 'float' to 'np.floating' is deprecated. In future, it will be treated as 'np.float64 == np.dtype(float).type'.
  from ._conv import register_converters as _register_converters
Using TensorFlow backend.
Error: ImportError: Traceback (most recent call last):
  File "/home/ubuntu/anaconda2/envs/r-tensorflow/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "/home/ubuntu/anaconda2/envs/r-tensorflow/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "/home/ubuntu/anaconda2/envs/r-tensorflow/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory

Это происходит из-за того, что метод установки R вызывает функцию tensorflow версии 1.5.0, которая по-прежнему не обслуживается для CUDA 9.1.

Ответы

Ответ 1

Попробуйте поместить это в свой .bashrc:

export KERAS_BACKEND='tensorflow'

Или на основе этой инструкции вы можете:

tensorflow::install_tensorflow(version = "https://github.com/mind/wheels/releases/download/tf1.5-gpu-cuda91-nomkl/tensorflow-1.5.0-cp27-cp27mu-linux_x86_64.whl")

Затем keras автоматически определит правильный тензорный поток

Ответ 2

R ищет версию CUDA 9.0, а не последнюю версию 9.1. Вы должны иметь возможность символизировать вашу систему, чтобы она попала в папку 9.1; что-то вроде:

ln -s [path to cuda 9.0 it looking for] [cuda 9.1]

В качестве альтернативы вы можете удалить 9.1 и установить 9.0. Я считаю, что вам также понадобится cudnn version 7.