RStudio/ R 上的 Tensorflow 设置 |中央操作系统

2024-07-01

在过去的 5 天里,我试图让 Keras/Tensorflow 包在 R 中工作。我使用 RStudio 进行安装并使用conda, miniconda, virtualenv但最后每次都会崩溃。安装库不应该是一场噩梦,尤其是当我们谈论 R 时(最好的统计语言之一) 和 TensorFlow (最好的深度学习库之一)。有人可以分享在 CentOS 7 上安装 Keras/Tensorflow 的可靠方法吗?

以下是我用来安装的步骤tensorflow在 RStudio 中。

由于 RStudio 每次运行时都会崩溃tensorflow::tf_config()我无法检查出了什么问题。

devtools::install_github("rstudio/reticulate")
devtools::install_github("rstudio/keras") # This package also installs tensorflow
library(reticulate)
reticulate::install_miniconda()
reticulate::use_miniconda("r-reticulate")
library(tensorflow)
tensorflow::tf_config() **# Crashes at this point**

sessionInfo()


R version 3.6.0 (2019-04-26)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: CentOS Linux 7 (Core)

Matrix products: default
BLAS/LAPACK: /usr/lib64/R/lib/libRblas.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] tensorflow_2.7.0.9000 keras_2.7.0.9000      reticulate_1.22-9000 

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.7      lattice_0.20-45 png_0.1-7       zeallot_0.1.0  
 [5] rappdirs_0.3.3  grid_3.6.0      R6_2.5.1        jsonlite_1.7.2 
 [9] magrittr_2.0.1  tfruns_1.5.0    rlang_0.4.12    whisker_0.4    
[13] Matrix_1.3-4    generics_0.1.1  tools_3.6.0     compiler_3.6.0 
[17] base64enc_0.1-3


Update 1安装 Tensorflow 时 RStudio 不崩溃的唯一方法是执行以下步骤 -

首先,我使用 conda 创建了一个新的虚拟环境

conda create --name py38 python=3.8.0
conda activate py38
conda install tensorflow=2.4

然后在 RStudio 中,我安装了 reticulate 并激活了我之前使用 conda 创建的虚拟环境

devtools::install_github("rstudio/reticulate")
library(reticulate)
reticulate::use_condaenv("/root/.conda/envs/py38", required = TRUE)
reticulate::use_python("/root/.conda/envs/py38/bin/python3.8", required = TRUE)
reticulate::py_available(initialize = TRUE)
ts <- reticulate::import("tensorflow")

当我尝试导入时tensorflow在 RStudio 中,它加载库/lib64/libstdc++.so.6代替/root/.conda/envs/py38/lib/libstdc++.so.6我收到以下错误 -

Error in py_module_import(module, convert = convert) : 
  ImportError: Traceback (most recent call last):
  File "/root/.conda/envs/py38/lib/python3.8/site-packages/tensorflow/python/pywrap_tensorflow.py", line 64, in <module>
    from tensorflow.python._pywrap_tensorflow_internal import *
  File "/home/R/x86_64-redhat-linux-gnu-library/3.6/reticulate/python/rpytools/loader.py", line 39, in _import_hook
    module = _import(
ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /root/.conda/envs/py38/lib/python3.8/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so)


Failed to load the native TensorFlow runtime.

See https://www.tensorflow.org/install/errors

for some common reasons and solutions.  Include the entire stack trace
above this error message when asking for help.

这是里面的内容/lib64/libstdc++.so.6

> strings /lib64/libstdc++.so.6 | grep GLIBC

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.14
GLIBC_2.4
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH

为了解决库问题,我添加了正确的路径libstdc++.so.6图书馆有GLIBCXX_3.4.20在 RStudio 中。

system('export LD_LIBRARY_PATH=/root/.conda/envs/py38/lib/:$LD_LIBRARY_PATH')

并且

Sys.setenv("LD_LIBRARY_PATH" = "/root/.conda/envs/py38/lib")

但我仍然遇到同样的错误ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20'。不知怎的,RStudio 仍然加载/lib64/libstdc++.so.6首先代替/root/.conda/envs/py38/lib/libstdc++.so.6

代替RStudio,如果我在R控制台,然后我也得到完全相同的错误。

更新2:已发布解决方案here https://stackoverflow.com/a/70798023/11939840


也许我失败的尝试会帮助其他人解决这个问题;我的方法:

  • 启动一个干净的 CentOS 7 虚拟机
  • 安装 R 和一些依赖项
sudo yum install epel-release
sudo yum install R
sudo yum install libxml2-devel
sudo yum install openssl-devel
sudo yum install libcurl-devel
sudo yum install libXcomposite libXcursor libXi libXtst libXrandr alsa-lib mesa-libEGL libXdamage mesa-libGL libXScrnSaver
  • 通过 Linux 安装程序脚本下载并安装 Anaconda
  • 创建一个新的 conda 环境
conda init
conda create --name tf
conda activate tf
conda install -c conda-forge tensorflow

**从此 conda env 中,您可以在 python 中导入tensorflow,不会出现错误;现在通过 R 访问 tf

  • 通过 devtoolset 安装更新的 gcc
sudo yum install centos-release-scl
sudo yum install devtoolset-7-gcc*
  • 尝试通过 reticulate 包在 R 中使用tensorflow
scl enable devtoolset-7 R
install.packages("remotes")
remotes::install_github('rstudio/reticulate')
reticulate::use_condaenv("tf", conda = "~/anaconda3/bin/conda")
reticulate::repl_python()
# This works as expected but the command "import tensorflow" crashes R
# Error: *** caught segfault *** address 0xf8, cause 'memory not mapped'

# Also tried:
install.packages("devtools")
devtools::install_github('rstudio/tensorflow')
devtools::install_github('rstudio/keras')
library(tensorflow)
install_tensorflow() # "successful"
tensorflow::tf_config()
# Error: *** caught segfault *** address 0xf8, cause 'memory not mapped'
  • 尝试旧版本的tensorflow/keras
devtools::install_github('rstudio/[email protected] /cdn-cgi/l/email-protection')
devtools::install_github('rstudio/[email protected] /cdn-cgi/l/email-protection')
library(tensorflow)
tf_config()
# Error: *** caught segfault *** address 0xf8, cause 'memory not mapped'
  • 尝试更新版本的 R (v4.0)
# deactivate conda
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 
export R_VERSION=4.0.0
curl -O https://cdn.rstudio.com/r/centos-7/pkgs/R-${R_VERSION}-1-1.x86_64.rpm
sudo yum install R-${R_VERSION}-1-1.x86_64.rpm

scl enable devtoolset-7 /opt/R/4.0.0/bin/R
install.packages("devtools")
devtools::install_github('rstudio/reticulate')
reticulate::use_condaenv("tf", conda = "~/anaconda3/bin/conda")
reticulate::repl_python()
# 'import tensorflow' resulted in "core dumped"

我猜问题出在 R/CentOS 上,因为您可以正常通过 python 导入和使用tensorflow,但我不确定还可以尝试什么。

我还想说,我对 Ubuntu 没有任何问题(它由 TensorFlow、macOS 和 Windows 专门支持),并且我遇到了这些文档,它们可能会有所帮助:https://wiki.hpcc.msu.edu/display/ITH/Installing+TensorFlow+using+anaconda https://wiki.hpcc.msu.edu/display/ITH/Installing+TensorFlow+using+anaconda / https://wiki.hpcc.msu.edu/pages/viewpage.action?pageId=22709999 https://wiki.hpcc.msu.edu/pages/viewpage.action?pageId=22709999

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RStudio/ R 上的 Tensorflow 设置 |中央操作系统 的相关文章

  • R 中逻辑回归建模的子集化

    在 R 中的逻辑回归过程中分割和子集数据时 我收到以下错误消息 我陷入了 子集 步骤 library caTools split lt sample split df1 SplitRatio 0 5 split training lt su
  • 如何在 ggplot2 条形图中添加图例

    我试图在 ggplot2 中设计一个漂亮的图表 通过使用条形图来显示某些时期的不同值 我得到了图形 但无法在图形的右侧添加图例 我的数据框DF有 3 个变量Month variable value 这些变量的结果是melt 另一个数据中的函
  • numpy 不规则跨步数组

    引用文档 http docs scipy org doc numpy reference arrays ndarray html internal memory layout of an ndarray关于内存中的 numpy 数组结构 N
  • 如何在不破坏 DataFrame.append() 的情况下子类化或以其他方式扩展 pandas DataFrame?

    我有一个复杂的对象 我想围绕 pandas DataFrame 构建 我尝试使用子类执行此操作 但是即使在使用时 附加到 DataFrame 也会重新初始化新实例中的所有属性 metadata 按照推荐here https pandas p
  • keras 中的自定义线性变换

    我想在 keras 中构建一个自定义层 以对最后一层的输出进行线性变换 例如 我从最后一层得到输出 X 我的新层将输出 X dot W b W的形状是 49 10 X 的形状应该是 64 49 b的形状为 10 然而 X 的形状是 7 7
  • scikit learn中partial_fit遇到的错误

    在 scikit learn 中使用partial fit 函数进行训练时 即使训练后的模型行为正确并给出正确的输出 我也会在程序未终止的情况下收到以下错误 这怎么可能 以及这样做的后果是什么 这是值得担心的事情吗 usr lib pyth
  • Python 中的一维马哈拉诺比斯距离

    我一直在努力validate我的计算代码马哈拉诺比斯距离写在Python 并仔细检查以比较 OpenCV 中的结果 我的数据点均为 1 维 5 行 x 1 列 In OpenCV C 我成功计算了马哈拉诺比斯距离方面数据点的尺寸为上述尺寸
  • tqdm 进度条和 colorama 不能一起工作

    我想使用 colorama 但我已经在代码中使用了 tqdm Example import colorama as color import tqdm as tqdm without line it s working print colo
  • as.POSIXlt 忽略 tz 参数

    非常基本 只是不明白 tz 论点是为了什么 如果不是为了这个 dateIWantToConvert lt as Date 2013 06 01 the format of my starting object as POSIXlt date
  • Python pandas 使用 read_hdf 和 HDFStore.select 从 HDF5 文件读取特定值

    所以我使用一个简单的数据集创建了 hdf5 文件 如下所示 gt gt gt pd read hdf STORAGE2 h5 table A B 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 使用这个脚本 import pan
  • python中1+1可以等于3吗? [复制]

    这个问题在这里已经有答案了 在继续之前 我知道人们应该never做这个 这个问题纯粹是出于教育目的 我进行这个练习是为了更好地理解 python 的内部结构ctypes 以及它们如何工作 我知道在 python 中更改整数的值相对容易 其实
  • PySpark 将模型预测与未转换的数据对齐:最佳实践

    使用 PySpark 的 ML 模块 经常会发生以下步骤 在数据清理之后等 执行特征和目标转换管道 创建模型 从模型生成预测 将预测和原始数据集合并在一起 供业务用户和模型验证之用 摘取一段精简的代码片段 predictions model
  • groupCheckboxInput 的组标题

    In shinywidgets pickerInput您可以传递指定的数据列表 此处 nms to pickerInput从列表中创建标题和选项 例如 library shiny library shinyWidgets nms list
  • 卸载(删除)带有依赖项的 R 包

    我想尝试一些新的套餐 我安装了它 它需要很多依赖项 因此它安装了很多其他软件包 我尝试过 但没有留下深刻的印象 现在我想卸载该包 包括所有依赖项 有没有办法删除给定的包 包括系统中任何其他包不需要的所有依赖项 我在看 remove pack
  • 一次将多个函数应用于 Pandas groupby 对象

    已经提出了这个问题的变体 参见这个问题 https stackoverflow com questions 40532024 pandas apply multiple functions of multiple columns to gr
  • Selenium 不打开指定的 URL 并显示数据:,

    我正在尝试在 chrome 中使用 selenium 打开 URL 我有 chromedriver 可用 以下是我要执行的代码 from selenium import webdriver chrome options webdriver
  • 通过串口从python向Arduino发送数据

    如果在串行端口上读取字符 s 我试图让 Arduino 触发继电器 该字符 s 是由 python 根据从屏幕读取的图像发送的 我的问题是arduino似乎无法从串行端口读取 因为它从不执行if条件 我的猜测是两者之间存在某种死锁 这就是为
  • 将函数应用于数据帧的每一行

    下面有什么更优雅的实现方式 我想应用一个函数 my function到数据帧 其中数据帧的每一行都包含函数的参数 然后我想将函数的输出写回数据帧行 results pd DataFrame for row in input panel it
  • 使用 auto.key 在晶格中符号填充颜色

    我正在使用一个情节xyplot in lattice R 15 2 格子 0 20 13 其中我想通过标记的形状来区分几个组 我需要使用一个向下的三角形 它只能作为空心符号使用 pch 25 与向上三角形不同 向上三角形可用作填充 pch
  • 将长文本换行到文本框中

    我有以下可重现的系数图 library tidyverse tribble term estimate lower upper text a 25 2 3 Lorem ipsum dolor sit amet consectetur adi

随机推荐