Saturday, February 10, 2018

How to make keras in R use the tensorflow installed by Python

Leave a Comment

I have already performed the tensor flow installation with the following command:

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 

This is the latest tensorflow wheel catered for CUDA 9.1. (3x faster than CUDA 8.0)

And I can call it successfully in my python code.

How can I make the keras in R to call the tensorflow installed by python above? The reason I asked that because I the default installation method

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

It failed to recognize the cuda-9.1 library.

> 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 

This is because R installation method calling for tensorflow version 1.5.0 that is still not catered for CUDA 9.1.

2 Answers

Answers 1

Try to put this in your .bashrc:

export KERAS_BACKEND='tensorflow' 

Or based on this instruction, you can do:

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") 

Then keras will automatically identify the correct tensorflow

Answers 2

R is looking for the CUDA 9.0 version, rather than the latest 9.1. You should be able to symlink your system so it ends up at the 9.1 folder instead; something like:

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

Alternatively you may be able to uninstall 9.1 and install 9.0. I believe you will also need cudnn version 7.

If You Enjoyed This, Take 5 Seconds To Share It

0 comments:

Post a Comment