尝试R语言用keras进行transformer时遇到的bug

bug如下:
Error in py_call_impl(callable, dots$args, dots$keywords) : RuntimeError: Evaluation error: object of type 'closure' is not subsettable.
或者

RuntimeError: in user code:

C:\Program Files\R\R-3.6.2\library\reticulate\python\rpytools\call.py:21 python_function *
raise RuntimeError(res[kErrorKey])

RuntimeError: Evaluation error: argument is missing, with no default.

可尝试的一种方法(重新下载安装),这种方法也是R语言下载keras和tensorflow的方法,比我以前的方法应该简单明了一些:

install.packages("keras") 
library(reticulate)
virtualenv_create("r-reticulate", python = install_python())
library(keras)
install_keras(envname = "r-reticulate")

这种方法是老师给我的,但是我这里是失败状态,应该是底层权限的问题,在virtualenv_create()这里不能创建新的虚拟环境。
所以我自己又捅咕了一会,得到了以下办法:
首先说一下我这里的R语言使用keras(tensorflow后端)的方法。 我的这种方法可能是冗余的(就是说安装了两次keras和tensorflow):先在anaconda3里面创建虚拟环境,下载好tensorflow(GPU-2.x.0版本),之后在R语言里面安装keras和tensorflow的包,这里我发现的问题就是R语言里面的keras使用keras_install()竟然自己不知道在哪里又下载了一次tensorflow。所以造成了我以为R使用的是我下载好的虚拟环境(anaconda里的),但是使用的是R语言自己下载的(是可以跑普通的模型,但是自己编写层就不可以了)。

所以使用以下办法:
关闭Rstudio,重新打开Rstudio(以管理者身份运行(以Rproject方式打开是不可以的(也是权限问题),会导致环境切换失败))。这个方法其实就是切换到正确的tensorflow后端。

library(reticulate)
use_python('C:/Users/hp/anaconda3/envs/r-tensorflow/python.exe')
reticulate::use_condaenv(condaenv = "r-tensorflow", required = TRUE)

这里面是我的路径,所以你们要替换成你们自己的路径,我自己目前不知道到底是第一行代码管用还是第二行代码管用。总之好使了。注释:‘r-tensorflow’是我在anaconda里面自己创建的虚拟环境的名字。第一行的代码就是那个虚拟幻境(r-tensorflow)的python所在地。不知道地址可以上anaconda里面查询一下环境地址和python的位置。

你可能感兴趣的:(Rstudio,R,tensorflow,r语言,keras,transformer)