如何在不同的conda环境中设置不同的keras后端

时间:2018-05-15 06:58:32

标签: python tensorflow keras environment-variables anaconda

如何在不同的conda环境中设置不同的keras后端?因为在特定环境中,如果我将后端更改为tensorflow中的keras.json,那么在另一个python环境中,keras后端也将tensorflow。我的文档中只有一个keras.json

3 个答案:

答案 0 :(得分:2)

用于在Anaconda的不同环境中使用不同的keras后端-'env1'和'env2'

  • 激活第一个环境'env1'
  • 使用默认的后端从python导入keras(例如,如果无法加载tensorflow,则在该环境中安装tensorflow)
  • 在〜文件夹中,将创建一个'.keras'文件夹,其中将包含keras.json文件
  • 对于其他环境,请创建“ .keras”文件夹的副本作为“ .keras1”
  • 根据要求(“后端”字段)更改该文件夹中的keras.json文件
  • 要在“ env2”中使用该配置,请转到'〜/ anaconda3 / envs / env2 / lib / pythonx.x / site-packages / keras / backend',然后编辑 __ init__ .py 文件
  • 进行标记为 ##
  • 的更改
  • 您将能够在env1和env2中导入具有不同后端的keras

<div>{{ myFunc(myObject) }}</div>
<!-- it is even worse if the above template is encapsulated by a *ngFor -->

...

class SomeComponent {
 myFunc(var someVar) {
   print('Hello!'); // Hello is being repeatadly print
 } 
}

答案 1 :(得分:2)

这是我出于个人目的所做的事情,与Kedaranswer的逻辑相同,但是在Windows安装(和Keras版本)上,其位置和文件名可能有所不同:

1 / 在目标Anaconda环境的文件夹中设置特定的keras.json 文件。修改“后端”值。

2 / 然后强制'load_backend.py'(特定于您的anaconda环境)加载该特定的keras.json。 另外,将“默认后端”强制为该文件中所需的默认后端。

================================================ ========

详细信息

1.1 打开您想要特定后端的Anaconda环境文件夹。就我而言,它是C:\ ProgramData \ Anaconda3 \ envs \ [MyAnacondaEnvironment] \

1.2 在这里创建一个文件夹.keras,然后在该文件夹中复制或创建一个文件keras.json(我从C:\ Users \ [MyWindowsUserProfile] \。keras \ keras.json复制了我的文件夹)。

现在在该文件中,更改所需的后端,我为某些测试选择了“ cntk”。现在,文件内容应如下所示:

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

文件的名称和位置类似于C:\ ProgramData \ Anaconda3 \ envs \ [MyAnacondaEnvironment] \。keras \ keras.json

2.1 现在打开特定于您要定制的环境的文件'load_backend.py',在这里(以我为例)C:\ ProgramData \ Anaconda3 \ envs \ [MyAnacondaEnvironment] \ Lib \ site-packages \ keras \ backend

2.2 在我的Keras版本(2.3.1)的第17到25行中,该文件通常会在环​​境变量或当前Windows的帮助下从其定位的配置文件中加载后端例如用户。因此,当前您的后端是跨环境的。

通过强制'load_backend.py'查找要直接在您的环境特定的配置文件(在步骤1.2中创建的配置文件)中加载哪个后端来摆脱这种情况

例如,该“ load_backend.py”文件的第26行(在我的情况下,第26行,无论如何尝试自动加载配置文件之后)都会添加该行(并针对您自己的位置进行自定义):

_keras_dir ='C:\ ProgramData \ Anaconda3 \ envs \ [MyAnacondaEnvironment] \。keras'## Force脚本从特定文件获取配置

3.1 然后,将默认后端_BACKEND ='tensorflow'替换为_BACKEND ='cntk'(在我的情况下,第28行,无论是在强制使用_keras_dir路径之后)。

您应该完成

答案 2 :(得分:0)

一种解决方案是为不同的环境创建不同的用户,并为两者添加不同的keras.json文件:

$HOME/.keras/keras.json

这样您就可以独立更改任何keras参数。

如果您只需要更改后端,则更容易使用KERAS_BACKEND env变量。以下命令将使用tensorflow,而不管keras.json中的内容:

$ KERAS_BACKEND=tensorflow python -c "from keras import backend"
Using TensorFlow backend.

所以你可以启动一个新的shell终端,在其中运行export KERAS_BACKEND=tensorflow,所有后续命令都将使用tensorflow。你可以进一步设置每个conda env激活的变量,如this question中所述(如果你需要它永久):

$PREFIX/etc/conda/activate.d