2017-04-10 44 views
12

Mam zainstalowany tensorflow-gpu w moim środowisku Anaconda. Oboje działają dobrze.Jak sprawić, aby Keras korzystał z backendu Tensorflow w Anacondzie?

Teraz próbuję zainstalować Keras z backendem Tensorflow. Według instruction prostu uruchom:

pip install keras 

Ale to nie instaluje Keras, potem próbowałem:

conda install -c conda-forge keras=2.0.2 

to jestem teraz w stanie Keras przywozowe w Pythonie. Ale problem polega na tym, że zawsze używa on backend Theano. Próbuję to zmienić, ale nie wiem, jak to zrobić.

Próbowałem również edytować plik ~/.keras, ale w rzeczywistości domyślny backend był już tensorflow.

Proszę o pomoc .. Dziękuję bardzo!

Odpowiedz

21

Dzieje się tak dlatego, że pakiet Keras Conda-Forge umieszcza plik w ${CONDA_PREFIX}/etc/conda/activate.d/keras_activate.sh, który ustawia zmienną środowiskową KERAS_BACKEND

(root) [[email protected] ~]# cat $CONDA_PREFIX/etc/conda/activate.d/keras_activate.sh 
#!/bin/bash 
if [ "$(uname)" == "Darwin" ] 
then 
    # for Mac OSX 
    export KERAS_BACKEND=tensorflow 
elif [ "$(uname)" == "Linux" ] 
then 
    # for Linux 
    export KERAS_BACKEND=theano 
fi 

Jak widać z pliku w systemie Linux, ustawia wartość „Theano 'i według oficjalnych dokumentów:

zmienna środowiskowa KERAS_BACKEND zastąpi co zdefiniowanych w pliku konfiguracyjnym

Aby obejść ten problem, można edytować ten plik i zmień „Theano” do „tensorflow” (które prawdopodobnie nadpisane na zainstalować lub na zmianę środowiska) lub wykonaj następujące czynności:

export KERAS_BACKEND=tensorflow 
python /path/to/python/program.py 
+0

Hi @nehal, dziękuję! Wspomniana metoda work-around działa. Ale próbuję znaleźć keras_activate.sh. Jednak nie ma ** conda/** in ** $ {CONDA_PREFIX}/etc/**. To jest mój ls: 'dbus-1/fish/fonts/jupyter/rc.d /' –

+0

@TaiChristian Wyszukaj keras_activate.sh. 'znajdź $ CONDA_PREFIX | grep keras_activate.sh' –

+2

Po prostu zwracając uwagę na zagubione dusze, dotyczy to również systemu Windows, ale twoje polecenia to "echo% CONDA_PREFIX%" i "ustaw KERAS_BACKEND = tensorflow". – FvD

2

Had ten sam problem po zainstalowaniu keras z conda-kuge. keras.json już tensorflow:

{ 
    "floatx": "float32", 
    "epsilon": 1e-07, 
    "backend": "tensorflow", 
    "image_data_format": "channels_last" 
} 

ale activate tensorflow_keras (gdzie "tensorflow_keras" to nazwa środowisko), zmienia backend do Theano:

C:\Users\User1>activate tensorflow_keras 

(tensorflow_keras) C:\Program Files\Anaconda3\envs\tensorflow_keras\etc\conda\ac 
tivate.d>set "KERAS_BACKEND=theano" 

Po @FvD powyżej, I edycja tego pliku:

C:\Program Files\Anaconda3\envs\tensorflow_keras\etc\conda\activate.d 

i zmienił Theano do tensorflow:

set "KERAS_BACKEND=tensorflow" 
+0

Dziękujemy! Może być odpowiedzią dla osób korzystających z systemu Windows: 3 –

0

miał podobny problem, wydaje się, że jeśli ~/.keras/keras.json nie jest dostępny, Keras korzysta /tmp/.keras/keras.json

0

Choć wydaje się to trochę pracy, jeśli używasz Conda envs tak samo jak ja, gdzie mam środowiska dla Tensorflow i Theano oddzielnie. Zmniejszy to wiele powtarzających się ustawień i wyłącza zmienne środowiskowe za każdym razem, gdy jest aktywowany.

https://conda.io/docs/user-guide/tasks/manage-environments.html

Według Conda stronie envs.

1) Odszukaj katalog dla środowiska Conda w oknie terminala, takich jak

/home/jsmith/anaconda3/envs/analytics. 

2) Wprowadź ten katalog i utworzyć te podkatalogi i pliki:

cd /home/jsmith/anaconda3/envs/analytics 
mkdir -p ./etc/conda/activate.d 
mkdir -p ./etc/conda/deactivate.d 
touch ./etc/conda/activate.d/env_vars.sh 
touch ./etc/conda/deactivate.d/env_vars.sh 

3) Edit. /etc/conda/activate.d/env_vars.sh następująco:

echo 'export KERAS_BACKEND=theano' > ./etc/conda/activate.d/env_vars.sh 

4) Edit ./etc/conda/deactivate. d/env_vars.sh następująco:

echo 'unset KERAS_BACKEND' > ./etc/conda/deactivate.d/env_vars.sh 
2

na multi-user zainstalować na Windows 10 plik aktywacyjny środowisko Anaconda jest:

C:\Users\<user name>\AppData\Local\Continuum\Anaconda3\envs\<environment name>\etc\conda\activate.d\keras_activate.bat 

Wystarczy zmienić <user name> i <environment name> dopasować.