【问题标题】:How to switch Backend with Keras (from TensorFlow to Theano)如何使用 Keras 切换后端(从 TensorFlow 到 Theano)
【发布时间】:2017-06-29 21:07:44
【问题描述】:

我尝试使用 Keras 切换后端(从 TensorFlow 到 Theano),但没有成功。 我遵循here 描述的临时工,但它不起作用。我在 keras 的目录中创建了一个 keras.json(因为它不存在),但是当我从 Python 导入它时它并没有改变任何东西。

【问题讨论】:

    标签: backend theano keras


    【解决方案1】:

    在您的主目录中创建一个.keras(注意前面的.)文件夹并将keras.json 文件放在那里。

    例如,/home/DaniPaniz/.keras/keras.json(或简称为~/.keras/keras.json)如果您使用的是类 UNIX 系统(MacOS X、Linux、*BSD)。在 Windows 上,您要创建文件夹 %USERPROFILE%/.keras 并将 JSON 文件放在那里。

    或者,你也可以设置环境变量KERAS_BACKEND:

    KERAS_BACKEND=theano python mymodel.py
    

    【讨论】:

    • 也可以在导入keras之前加上import os; os.environ['KERAS_BACKEND'] = 'theano'
    【解决方案2】:

    如果您想永久更改配置,可以在此处获取 json:~/.keras/keras.json,您可以更改后端。

    要在 python 2.7 中动态执行此操作,您可以运行:

    from keras import backend as K
    import os
    
    def set_keras_backend(backend):
    
        if K.backend() != backend:
            os.environ['KERAS_BACKEND'] = backend
            reload(K)
            assert K.backend() == backend
    
    set_keras_backend("theano")
    

    【讨论】:

    • 我的机器上不知道函数 reload
    • 如果您使用的是 python 3,reload 不是内置的。要在 python 3 中使用重新加载:stackoverflow.com/a/961219
    • Python >= 3.4: import importlib; importlib.reload(K)
    • 仍然(使用importlib 库的reload 函数)后端没有为我动态更改。任何关于如何克服这个问题的想法都非常感谢。 @Wmol @Demitri
    【解决方案3】:

    在命令提示符下输入以下内容并回车:

    %USERPROFILE%/.keras/keras.json
    

    在打开的文本文件中更改后端并保存。你完成了。

    【讨论】:

      【解决方案4】:

      对于 Linux 系统,隐藏的 .keras 目录将在用户的主目录中创建。要观察它是否已创建,请从您的主目录运行以下命令(-a 允许您查看隐藏的文件和目录)。

      ls –a 
      

      如果目录在那里,则 cd 进入并修改 keras.json 文件。如果不存在,则使用

      创建目录
      mkdir .keras
      

      然后创建文件

      touch keras.json 
      

      然后编辑该文件以进行您引用的配置更改,以将后端引擎更改为 Theano。

      this video 全面介绍了此过程。

      【讨论】:

        【解决方案5】:

        在 Windows 中,您需要在 C 盘中找到 .keras 文件夹。很可能,它将位于 C:/users/username/ 中的某个位置。在那里你会找到 .keras 文件夹,它包含一个 json 文件,keras.json,打开它。 你会看到:

        {
        “backend”: “tensorflow”,
        “floatx”: “float32”,
        “epsilon”: 1e-07
        }
        

        或多或少。 将“tensorflow”替换为“theano”。并保存文件。

        【讨论】:

          【解决方案6】:
          from keras import backend as K
          from os import environ
          
          # user defined function to change keras backend
          def set_keras_backend(backend):
              if K.backend() != backend:
                 environ['KERAS_BACKEND'] = backend
                 reload(K)
                 assert K.backend() == backend
          
          # call the function with "theano"
          set_keras_backend("theano")
          

          【讨论】:

          • 您能解释一下这是如何解决问题的吗?
          • @StephenRauch 当您导入 keras 时,它会选择“tensorflow”作为默认后端。如果您需要切换到“theano”,以上几行将完成这项工作。
          • name 'reload' 没有定义?
          • 对我不起作用,因为我创建了自己的问题:stackoverflow.com/questions/62735466/…
          • @talha06 您使用的是哪个系统 - Windows、Mac 还是 Linux?我建议编辑您的 keras.json 文件。因此,找到该文件并进行相应的更改。
          【解决方案7】:

          我遇到了一个问题,在我将后端设置为 theano 之前,我根本无法 from keras import backend。如果您可以导入后端,则提供的答案应该有效,但如果不能,请使用:

          import os
          os.environ['KERAS_BACKEND'] = 'theano'
          import keras as ks
          # Using Theano backend.
          

          【讨论】:

            【解决方案8】:

            如果您使用的是 Windows,则可以从命令行运行:

            set "KERAS_BACKEND=theano"

            【讨论】:

              【解决方案9】:

              Termux - Android 11 - 最后与 H5py 3.4.0 凯拉斯 2.2.0 Theano 1.0.5 Numpy 1.17.5

              我发现包在构建和 --update 时有时不会安装。 ***** 您需要手动卸载/安装。 ..我喜欢

              【讨论】:

              • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。
              猜你喜欢
              • 2018-04-26
              • 2021-06-15
              • 1970-01-01
              • 2017-06-27
              • 2019-09-28
              • 2017-10-29
              • 2017-04-27
              • 2016-09-02
              • 1970-01-01
              相关资源
              最近更新 更多