【问题标题】:How should I install keras-bert to use properly on R side?我应该如何安装 keras-bert 才能在 R 端正确使用?
【发布时间】:2022-08-18 23:23:34
【问题描述】:

我正在尝试按照here 的说明安装 keras-bert。虽然在 as 环境下安装成功,但在 R 端看不到 keras-bert。

(bert_env) C:\\Users\\root\\Dropbox\\Rcode\\ProjectBERT>pip list
Package                          Version
-------------------------------- ---------
certifi                          2022.6.15
keras                            2.6.0
keras-bert                       0.89.0
keras-embed-sim                  0.10.0
keras-layer-normalization        0.16.0
keras-multi-head                 0.29.0
keras-pos-embd                   0.13.0
keras-position-wise-feed-forward 0.8.0
keras-self-attention             0.51.0
keras-transformer                0.40.0
mkl-fft                          1.3.1
mkl-random                       1.2.2
mkl-service                      2.4.0
numpy                            1.23.1
pip                              22.1.2
setuptools                       61.2.0
six                              1.16.0
wheel                            0.37.1
wincertstore                     0.2

另一个证明 keras-bert 已成功安装在当前环境(bert_env)上:

(bert_env) C:\\Users\\root\\Dropbox\\Rcode\\ProjectBERT>pip install keras-bert
Requirement already satisfied: keras-bert in c:\\anaconda3\\envs\\bert_env\\lib\\site-packages (0.89.0)
Requirement already satisfied: keras-transformer==0.40.0 in c:\\anaconda3\\envs\\bert_env\\lib\\site-packages (from keras-bert) (0.40.0)

但是,我不能正确调用 R 端的包,上面写着:

> reticulate::conda_list()
      name                                   python
1     base                 C:\\\\Anaconda3/python.exe
2 bert_env C:\\\\Anaconda3\\\\envs\\\\bert_env/python.exe
3     py27     C:\\\\Anaconda3\\\\envs\\\\py27/python.exe
> reticulate::use_condaenv(\"bert_env\", required=TRUE)
> reticulate::py_config()
C:\\ANACON~2\\envs\\bert_env\\lib\\site-packages\\numpy\\__init__.py:138: UserWarning: mkl-service package failed to import, therefore Intel(R) MKL initialization ensuring its correct out-of-the box operation under condition when Gnu OpenMP had already been loaded by Python process is not assured. Please install mkl-service package, see http://github.com/IntelPython/mkl-service
  from . import _distributor_init
python:         C:/Anaconda3/envs/bert_env/python.exe
libpython:      C:/Anaconda3/envs/bert_env/python310.dll
pythonhome:     C:/Anaconda3/envs/bert_env
version:        3.10.4 | packaged by conda-forge | (main, Mar 30 2022, 08:38:02) [MSC v.1916 64 bit (AMD64)]
Architecture:   64bit
numpy:          C:/Anaconda3/envs/bert_env/Lib/site-packages/numpy
numpy_version:  1.23.1

我几乎尝试了所有作为解决方案提供的东西,例如:

conda update conda
conda update --all

然后我创建了一个完全干净的新环境,以便在那里重新安装 keras-bert。还查看了 scipy 和 numpy 包冲突,这是在他们的 github 方面提到的。一点都不成功!

当然,一旦我检查可用性,它就会返回 false!

reticulate::py_module_available(\'keras_bert\')
[1] FALSE

我知道这个post 并在 YAML 中应用了完全相同的模式。也没有任何改进。非常感谢任何有关正确安装 keras-bert 或我应该如何解决该问题的建议。

  • 您可以尝试在 R 会话开始时声明环境吗? I\'ve had problems in the past 与其他库一起阻止声明的网状环境受到尊重。也就是说,当 R 启动时,绝对首先执行reticulate::use_condaenv(\"bert_env\", required=TRUE)
  • @merv 我已经在做你指出的事情了。为了提供更多关于我目前情况的信息,我只是组织了上面的问题。
  • @merv此外,我通过提供完整路径使用了 reticulate::use_python 而不是 reticulate::use_condaenv ,它也对解决方案没有帮助。我真的不知道我应该如何处理这个问题:(
  • 好的 - 我已经能够在 a GitHub Windows runner. 上重新创建问题

标签: python keras package conda reticulate


【解决方案1】:

经过几天的搜索,我找到了一种正确设置网状路径的方法。这个问题也解决了主要问题。.Renviron 文件是一个用户可控制的文件,可用于创建环境变量。因此,.Renviron 文件可用于存储可从计算机中所有 R 项目访问的信息。

首先,您需要找到您的.Renviron 文件的位置。为了找到 .Renviron 文件的路径,您可以在 RStudio 控制台上键入:

usethis::edit_r_environ()

就我而言,它返回:

* Modify 'C:/Users/xxxxx/Documents/.Renviron'
* Restart R for changes to take effect

然后,您可以手动导航.Renviron 文件的位置。 (注意:在我的场景中打开它后它是空的。)然后将 python.exe 的完整路径粘贴到文件中,如下所示:

RETICULATE_PYTHON="YourEnvironmentPath/python.exe"

小费: 如果你不确定你的完整 python 路径,你可以得到它:

reticulate::conda_python("keras_bert")

请不要忘记输入您的环境名称而不是我的环境名称 > keras_bert)。 然后我得到:

[1] "C:\\Anaconda3\\envs\\keras_bert/python.exe"

就我而言,我粘贴了:

RETICULATE_PYTHON="C:\\Anaconda3\\envs\\keras_bert/python.exe"

或者(在 Windows 上),您可以单击开始并打开Windows Powershell.然后将此代码复制到powershell中以处理相同的事情:

Add-Content C:\Users\xxxxx\Documents/.Renviron 'RETICULATE_PYTHON="C:\\Anaconda3\\envs\\keras_bert/python.exe"'

为了查看更新,您必须关闭并重新打开 RStudio 才能获得干净的 RStudio 会话。现在,运行以下行来检查一切是否正常:

Sys.getenv('RETICULATE_PYTHON')

或者:

reticulate::py_config()

就我而言,它返回:

[1] "C:/Anaconda3/envs/keras_bert/python.exe"

或者:

python: C:/Anaconda3/envs/keras_bert/python.exe
libpython: C:/Anaconda3/envs/keras_bert/python38.dll
pythonhome:     C:/Anaconda3/envs/keras_bert
version:        3.8.13 | packaged by conda-forge | (default, Mar 25 2022, 05:59:45) [MSC v.1929 64 bit (AMD64)]
Architecture:   64bit
numpy:          C:/Anaconda3/envs/keras_bert/Lib/site-packages/numpy
numpy_version:  1.23.2

NOTE: Python version was forced by RETICULATE_PYTHON

简而言之,使用此解决方案,您无需关心是否在 R 会话开始时声明环境或任何其他混乱场景。

【讨论】:

    猜你喜欢
    • 2021-10-25
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2020-02-11
    • 2015-02-14
    • 1970-01-01
    • 2018-11-26
    • 2022-01-04
    相关资源
    最近更新 更多