Как сделать Keras использовать бэкэнс Tensorflow в Анаконде?

У меня есть tarorflow-gpu в моей среде Anaconda. Они оба работают хорошо.

Теперь я пытаюсь установить Keras с бэкэндом Tensorflow. Согласно инструкции, я просто запускаю:

pip install keras

Но он не устанавливает keras, а затем я попытался:

conda install -c conda-forge keras=2.0.2

Тогда я теперь могу импортировать keras в python. Но проблема в том, что он всегда использует бэкэнд Theano. Я пытаюсь изменить это, но не знаю, как это сделать.

Я также попытался отредактировать файл ~/.keras, но на самом деле бэкэндом по умолчанию был уже тензор.

Пожалуйста, помогите.. Большое вам спасибо!

Ответы

Ответ 1

Это происходит потому, что пакет keras conda-forge помещает файл в ${CONDA_PREFIX}/etc/conda/activate.d/keras_activate.sh, который устанавливает переменную окружения 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

Как видно из файла, в Linux он устанавливает значение "theano" и, согласно официальным документам:

переменная среды KERAS_BACKEND переопределит то, что определено в вашем файле конфигурации

Чтобы обойти это, вы можете отредактировать этот файл и изменить "theano" на "tensorflow" (который, вероятно, будет перезаписан при переустановке или изменении среды) или выполните следующие действия:

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

Ответ 2

Была такая же проблема после установки keras из conda-forge. keras.json уже имел тензорный поток:

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

но activate tensorflow_keras (где " tensorflow_keras " - это имя среды), изменяет backend на anano:

C:\Users\User1>activate tensorflow_keras

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

Следуя @FvD выше, я отредактировал этот файл:

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

и изменил theano на тензорный поток:

set "KERAS_BACKEND=tensorflow"

Ответ 3

При многопользовательской установке в Windows 10 файл активации среды Anaconda:

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

Просто измените <user name> и <environment name> для соответствия.

Ответ 4

Если возникла аналогичная проблема, кажется, что если ~/.keras/keras.json недоступен, keras использует /tmp/.keras/keras.json

Ответ 5

Для пользователей Windows, использующих Anaconda. Откройте Anaconda Prompt и введите:

set "KERAS_BACKEND=tensorflow"

Это должно делать свое дело. Если вы используете Jupyter Notebook, вам необходимо перезапустить его.

Ответ 6

Хотя это кажется немного трудным, если вы используете conda envs столько, сколько я, где у меня есть среды для Tensorflow и Theano отдельно. Это уменьшит много повторяющихся настроек и отключение переменных окружения при каждом включении.

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

Согласно странице conda envs.

1) Найдите каталог для среды conda в окне терминала, например

/home/jsmith/anaconda3/envs/analytics.

2) Введите этот каталог и создайте эти подкаталоги и файлы:

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) Измените. /etc/conda/activate.d/env_vars.sh следующим образом:

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

4) Измените. /etc/conda/deactivate.d/env_vars.sh следующим образом:

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

Ответ 7

В системе Mac перейдите к терминалу и перейдите к профилю пользователя и проверьте, существует ли папка .keras или нет.

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

Это должно выглядеть так.

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

Закройте редактор, нажав кнопку эвакуации, после чего : wq Он должен работать

Теперь, если вы используете среду conda, следуйте нижеуказанным шагам 1. сначала найдите переменную окружения, перейдя в папку anaconda env

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

Он содержит файл keras_activate.bat, который по умолчанию имеет theano как backend. Измените значение на shadoworflow и сохраните файл. KERAS_BACKEND = tensorflow

отключите среду и активируйте ее снова, т.е.

source deactivate name_of_your_conda_environment
source activate name_of_your_conda_environment

Надеюсь, что это решит все проблемы с тензором.

Ответ 8

Для пользователей Windows, в моем случае Windows 10, кажется, что то, как Anaconda создает файлы .bat, немного странно, или, по крайней мере, как они выполняются. Они показывают каждую написанную команду, в них в cmd.
По крайней мере, в моем случае это так.
Поэтому мне всегда говорили: "KERAS_BACKEND=theano", но это не было выполнено.

Проверьте это:

На этом пути: <your_conda_install_location>\envs\<your_environment_name>\etc\conda\activate.d вы найдете файл .bat.
(замените <whatever> в ссылках на пути, которые вы указали, на имена вашей системы)

также проверьте, задан ли для файла keras.json внутренний интерфейс tenorsflow.

Содержание в моем было:

:: Figure out the default Keras backend by reading the config file.
python %CONDA_PREFIX%\etc\keras\load_config.py > temp.txt
set /p KERAS_BACKEND=<temp.txt
del temp.txt

:: Try to use the default Keras backend.
:: Fallback to Theano if it fails (Theano always works).
python -c "import keras" 1> nul 2>&1
if errorlevel 1 (
    ver > nul
    set "KERAS_BACKEND=theano"
    python -c "import keras" 1> nul 2>&1
)

Я просто добавил @echo off, чтобы он не отображал весь код, и добавил вывод на консоль, чтобы сказать мне, что на самом деле было выполнено. Это одновременно работает как отладчик или как доказательство того, что он на самом деле не выполнялся set "KERAS_BACKEND=theano"
(прокрутите вниз, чтобы увидеть полностью отредактированный файл .bat)

сверху я добавил:

@echo off
:: message variables
set er0=used default Keras backend tensorflow
set er1=used fallback Keras backend theano

для сообщений:
в конце :: Figure out the default Keras backend by reading the config file.:

if errorlevel 0 (
    echo %er0%
    )

внутри if из :: Fallback to Theano if it fails (Theano always works):

echo %er1%


А теперь полный код из .bat для лучшего обзора:

@echo off
:: message variables
set er0=used default Keras backend tensorflow
set er1=used fallback Keras backend theano

:: Figure out the default Keras backend by reading the config file.
python %CONDA_PREFIX%\etc\keras\load_config.py > temp.txt
set /p KERAS_BACKEND=<temp.txt
del temp.txt
if errorlevel 0 (
    echo %er0%
    )

:: Try to use the default Keras backend.
:: Fallback to Theano if it fails (Theano always works).
python -c "import keras" 1> nul 2>&1
if errorlevel 1 (
    ver > nul
    set "KERAS_BACKEND=theano"
    echo %er1%
    python -c "import keras" 1> nul 2>&1
)

Так что теперь в cmd есть только сообщения, в которых указывается, использовался ли бэкэнд по умолчанию или в случае ошибки он использовал бэкэнд theano.
Также убедитесь, что в keras.json задан бэкэнд для tenorflow.

Я надеюсь, что это помогает некоторым пользователям Windows.

Ответ 9

В пути "/anaconda2/envs/py2/etc/conda/activate.d" есть файл keras_activate.sh.

Затем отредактируйте его, удалите содержимое:

"if [ "$(uname)" == "Darwin" ]

затем

    # for Mac OSX
    export KERAS_BACKEND=tensorflow
elif [ "$(uname)" == "Linux" ]

затем

    # for Linux
    export KERAS_BACKEND=theano
fi". 

после этого добавьте строку:

set "KERAS_BACKEND=tensorflow"

Ответ 10

Прежде всего, вам нужно установить одну из следующих версий python

Затем установите тензорный поток в качестве внутреннего процессора, используя следующую команду:

pip3 install --upgrade tensorflow

Затем установите keras, используя следующую команду:

pip3 install keras

Дополнительная информация доступна здесь: http://royalcrowntutorials.blogspot.com/2018/02/installing-tensor-flow-start-terminal.html