Как сделать 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