web-dev-qa-db-fra.com

Comment faire pour que Keras utilise le backend Tensorflow dans Anaconda?

J'ai installé tensorflow-gpu dans mon environnement Anaconda. Ils fonctionnent tous les deux bien.

Maintenant, j'essaie d'installer Keras avec le backend Tensorflow. Selon le instruction je lance juste:

pip install keras

Mais il n'installe pas de keras, alors j'ai essayé:

conda install -c conda-forge keras=2.0.2

Ensuite, je suis maintenant capable d'importer des keras en python. Mais le problème est qu'il utilise toujours le backend Theano. J'essaie de changer cela, mais je ne sais pas comment le faire.

J'ai également essayé d'éditer le fichier ~/.keras , mais en fait le backend par défaut était déjà tensorflow.

S'il vous plaît aider .. Merci beaucoup!

17
Tai Christian

Cela se produit car le package keras conda-forge place un fichier dans ${CONDA_PREFIX}/etc/conda/activate.d/keras_activate.sh, qui définit la variable d'environnement KERAS_BACKEND

(root) [root@starlabs ~]# 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

Comme vous pouvez le voir dans le fichier, sous Linux, il définit la valeur sur 'theano' et selon les documents officiels:

la variable d'environnement KERAS_BACKEND remplacera ce qui est défini dans votre fichier de configuration

Pour contourner ce problème, vous pouvez soit modifier ce fichier et remplacer "theano" par "tensorflow" (qui serait probablement écrasé lors de la réinstallation ou de l'évolution des environnements) ou, procédez comme suit:

export KERAS_BACKEND=tensorflow
python /path/to/python/program.py
40
Nehal J Wani

Eu le même problème après l'installation des keras de conda-forge. keras.json avait déjà tensorflow:

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

mais activate tensorflow_keras (où "tensorflow_keras "est le nom de l'environnement), change le backend en 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"

Suite à @FvD ci-dessus, j'ai édité ce fichier:

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

et changé le ano en tensorflow:

set "KERAS_BACKEND=tensorflow"
7
fairnc

Sur une installation multi-utilisateur sur Windows 10, le fichier d'activation de l'environnement Anaconda est:

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

Changez simplement <user name> et <environment name> correspondre.

4
4Oh4

Pour les utilisateurs de Windows utilisant Anaconda. Ouvrez l'invite Anaconda et saisissez:

set "KERAS_BACKEND=tensorflow"

Cela devrait faire l'affaire. Si vous utilisez Jupyter Notebook, vous devrez le redémarrer.

1
Rami Alloush

Eu un problème similaire, semble que si ~/.keras/keras.json n'est pas accessible, keras utilise /tmp/.keras/keras.json

1
user3236274

Bien que cela semble un peu de travail, si vous utilisez autant de conda envs que moi, où j'ai des environnements pour Tensorflow et Theano séparément. Cela réduira de nombreux réglages et désinstallations répétés des variables d'environnement chaque fois qu'il est activé.

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

Selon la page de conda envs.

1) Localisez le répertoire de l'environnement conda dans votre fenêtre Terminal, tel que

/home/jsmith/anaconda3/envs/analytics.

2) Entrez dans ce répertoire et créez ces sous-répertoires et fichiers:

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) Modifiez ./etc/conda/activate.d/env_vars.sh comme suit:

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

4) Modifiez ./etc/conda/deactivate.d/env_vars.sh comme suit:

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

Dans le système Mac, accédez au terminal et accédez au profil utilisateur et vérifiez si le dossier . Keras existe ou non.

ls -a
cd .keras
vim keras.json # edit the keras.json file in editor and change the backend to tensorflow

Cela devrait ressembler à ceci.

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

Fermez l'éditeur en appuyant sur le bouton escape puis suivi par : wq Cela devrait fonctionner

Maintenant, si vous utilisez un environnement conda, suivez les étapes mentionnées ci-dessous 1. localisez d'abord la variable d'environnement en accédant au dossier anaconda env

Anaconda3/envs/"nom_de_votre_environnement_conda" /etc/conda/activate.d

Il contient le fichier keras_activate.bat qui a theano as backend par défaut. Modifiez la valeur en tensorflow et enregistrez le fichier. KERAS_BACKEND = tensorflow

désactiver l'environnement et le réactiver, c'est-à-dire

source deactivate name_of_your_conda_environment
source activate name_of_your_conda_environment

J'espère que cela résoudra tous les problèmes de tensorflow du backend des keras.

0
Vaibhav K