小编coa*_*ess的帖子

使用CMake链接到Armadillo库

我正在尝试在Windows 8上安装MLPack.我使用以下命令配置CMakeLists.txt文件:

set(ARMADILLO_LIBRARY "C:\\Program Files (x86)\\armadillo\\lib")
set(ARMADILLO_INCLUDE_DIR "C:\\Program Files (x86)\\armadillo\\include")
Run Code Online (Sandbox Code Playgroud)

然后,当我运行CMake时,我发出了一系列警告,如下所示:

WARNING: Target "mlpack" requests linking to directory "C:\Program Files (x86)\armadillo\lib".  Targets may link only to libraries.  CMake is dropping the item.
Run Code Online (Sandbox Code Playgroud)

在\ mlpack-1.0.4\src\mlpack目录中,我找到了另一个CMakeLists文件:

target_link_libraries(mlpack
  ${ARMADILLO_LIBRARIES}
  ${Boost_LIBRARIES}
  ${LIBXML2_LIBRARIES}
)
Run Code Online (Sandbox Code Playgroud)

我改为(不确定这是不是一个好主意):

target_link_libraries(mlpack
  ${Boost_LIBRARIES}
)
link_directories(mlpack
  ${ARMADILLO_LIBRARIES}
  ${LIBXML2_LIBRARIES}
)
Run Code Online (Sandbox Code Playgroud)

然后CMake似乎运行顺利:

-- Found Armadillo: C:\Program Files (x86)\armadillo\lib (found suitable version "3.800.2", minimum required is "2.4.2")
-- Found LibXml2: C:\cpp\libraries\libxml2-2.7.8.win32\lib (found suitable version "2.7.8", minimum required is "2.6.0")
-- Boost version: 1.53.0
-- Found …
Run Code Online (Sandbox Code Playgroud)

linker cmake armadillo mlpack

5
推荐指数
2
解决办法
1万
查看次数

绘制图表背景点击事件

有没有办法将点击事件附加到 Plotly.js 图表的背景中?

这个想法是让用户单击图表来选择新元素的坐标。因此,它不仅仅是 div 包装器上的标准事件,而是可以跟踪所选位置的相对坐标的特定事件。

文档中指定的plotly_click事件仅附加到特定元素(点、线等),我找不到任何方法来实现我正在寻找的东西。

我们正在从 Highcharts 迁移,它允许您为图表上的单击事件以及上的单击定义回调。

Plotly.js 中有类似的东西或者有什么方法可以实现它吗?

javascript plotly

5
推荐指数
0
解决办法
384
查看次数

如何在Tensorflow上使用Bazel创建共享库

我尝试用bazel建立张量如下:

bazel build -c opt --copt =" - fPIC"--copt =" - g0"// tensorflow/tools/pip_package:build_pip_package

我看不到.so文件~/tensorflow/bazel-bin/tensorflow/core.

没有.so文件,只有.lo文件和.a文件.

你能告诉我如何制作.sotensorflow库的文件吗?

shared-libraries bazel tensorflow

5
推荐指数
1
解决办法
2773
查看次数

dyn.load(dllfile) 中的错误:无法加载共享对象 | 预期在:平面命名空间

我是 R 包开发的新手。我正在开发一个包 (bartpkg),它的src/文件夹中有一个 (prime) cpp 文件和一些辅助 cpp ( X.Cpp, Y.Cpp) 和一个 c 文件 ( Z.C) 及其头文件 ( X.h, Y.hand Z.h)

在 Rstudio 中执行“构建和重新加载”时出现以下错误。

Error in dyn.load(dllfile) :
  unable to load shared object '/Users/abcd/BART/bart_pkg1/src/bartpkg.so':
  dlopen(/Users/abcd/BART/bart_pkg1/src/bartpkg.so, 6): Symbol not found: __ZN3RNG4nfixElm
  Referenced from: /Users/abcd/BART/bart_pkg1/src/bartpkg.so
  Expected in: flat namespace
 in /Users/abcd/BART/bart_pkg1/src/bartpkg.so
Calls: suppressPackageStartupMessages ... <Anonymous> -> load_all -> load_dll -> library.dynam2 -> dyn.load
Execution halted

Exited with status 1.
Run Code Online (Sandbox Code Playgroud)

我遵循了基本准则来构建包。

.R 文件#' @useDynLib …

r shared-objects rcpp r-package

5
推荐指数
0
解决办法
3306
查看次数

要求在Rcpp包中使用OpenMP可用性

我通过使用RcppArmadilloOpenMP库以及以下命令在R中准备了一个包:

RcppArmadillo.package.skeleton("mypackage")
compileAttributes(verbose=TRUE)
Run Code Online (Sandbox Code Playgroud)

另外,在DESCRIPTION我添加的文件中:

Imports: Rcpp (>= 0.12.8), RcppArmadillo
LinkingTo:Rcpp, RcppArmadillo
Depends: RcppArmadillo
Run Code Online (Sandbox Code Playgroud)

NAMESPACE我添加的文件中:

import(RcppArmadillo)
importFrom(Rcpp, evalCpp)
Run Code Online (Sandbox Code Playgroud)

然后我运行以下代码cmd:

R CMD build mypackage
R CMD INSTALL mypackage.tar.gz
Run Code Online (Sandbox Code Playgroud)

我在我的计算机中构建并安装软件包,现在就使用它.但我的学院和朋友无法安装该软件包.错误消息是关于RcppArmadilloOpenMP库.

例如:

致命错误:找不到'omp.h'文件

有没有人在这种情况下有过经验?我必须在我的包中进行哪种类型的设置来解决这个问题?

r openmp armadillo rcpp r-package

5
推荐指数
1
解决办法
740
查看次数

计算R中两个值之间的百分比变化和一个问题

我试图以下列形式计算R中两点之间的百分比变化:

(X_(i+1) - X_(i))/(X_(i))
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止提出的:

#x is a vector from the dataframe
#lag is distance between two points being compared
percent_change = function(x,lag = 1)
{
    n = length(x)
    pchange = c((x[(1+lag):n] - x[1:(n-lag)])/x[1:(n-lag)],NA)
    return(pchange)
}
Run Code Online (Sandbox Code Playgroud)

但是,为了完成此任务,RI必须绑定NA以避免:

Error in \`$<-.data.frame\`(\`*tmp*\`, "Change", value = c(0.00248221082243916,  : 
  replacement has 4616 rows, data has 4617
Run Code Online (Sandbox Code Playgroud)

通过这种添加,操作发生并与我计算的应该是纸上的一致.

有没有办法我不必附加NA?

r function

4
推荐指数
1
解决办法
5953
查看次数

文档中的Travis CI R包错误

问候和致敬,

我最近连接了一个包含R包的github仓库给Travis CI.我认为存储库可以很好地构建,但是,有几个检查错误出现,我无法在本地安装的Windows,OS X或Ubuntu 14.04 LTS上复制.

错误源自共享以下共同的功能:

  1. 拥有使用@keyword内部编码的roxygen2帮助文档.
  2. 是使用Rcpp/RcppArmadillo编写的.

具体来说,我从Travis CI收到以下警告:

在文档对象"内部函数此处"中使用的函数或方法,但不在代码中:

这不是特别成问题,因为它是一个警告.上一篇文章使用@method和@export解决了此示例的不同形式.但是,Rcpp函数不属于OO类(S3/S4/RR).

但是,当Travis CI开始评估软件包的示例时,此警告将成为错误:

错误:找不到函数"这里的内部函数"

并导致构建失败.但是,构建本身应该通过检查,因为函数确实存在.

Travis CI 按以下方式使用建议的准则进行配置:

language: r
sudo: required
warnings_are_errors: true

r_packages:
 - ggplot2
 - devtools
 - RcppArmadillo
 - knitr
 - gridExtra
 - grid

r_build_args: "--no-build-vignettes"
r_check_args: "--no-build-vignettes --as-cran"
Run Code Online (Sandbox Code Playgroud)

注意添加了--no-build-vignettes,因为Travis在构建它们时会出错,因为R代码调用了docs中列出的内部函数之一.

我相信这是最新的面向公众的建设: Travis CI报告(v1.0.1)

CRAN第一版的结果: CRAN报告(v1.0.0)

任何想法都会受到欢迎.

r package roxygen2 travis-ci

4
推荐指数
1
解决办法
495
查看次数

R:总结相邻矩阵元素.怎么加快?

我正在使用大约2500x2500x50(lonxlatxtime)的大型矩阵.矩阵只包含1和0.我需要知道每个时间步长24个周围元素的总和.到目前为止,我是这样做的:

xdim <- 2500
ydim <- 2500
tdim <- 50
a <- array(0:1,dim=c(xdim,ydim,tdim))
res <- array(0:1,dim=c(xdim,ydim,tdim))

for (t in 1:tdim){
  for (x in 3:(xdim-2)){
    for (y in 3:(ydim-2)){
      res[x,y,t] <- sum(a[(x-2):(x+2),(y-2):(y+2),t])
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这有效,但对我的需求来说太慢了.有人请建议如何加快速度?

r matrix openmp armadillo rcpp

4
推荐指数
1
解决办法
285
查看次数

Rc包中的ARMA_NO_DEBUG与RcppArmadillo

我想在访问RcppArmadillo中的矩阵元素时禁用绑定检查.

犰狳的文件说

可以通过编辑文件include/armadillo_bits/config.hpp来配置Armadillo.通过取消注释或注释掉下面列出的特定#define,可以启用或禁用特定功能.

但是在R包的上下文中,我该如何激活该指令?

我试过用它来创建一个config.h 文件

#ifndef CONFIG_LOADED
#define CONFIG_LOADED
#define ARMA_NO_DEBUG
#endif 
Run Code Online (Sandbox Code Playgroud)

然后将它包含在我的文件夹的每个 .cpp文件中/src,但我不确定它是否正常工作,或者除了#include "config.h"在每个.cpp文件中添加一个以外还有其他方法.


目前我有一个.cpp(包含主算法的那个),它以:

#include "configs.h"
#include <RcppArmadillo.h>

using namespace Rcpp;
using namespace arma;

// [[Rcpp::export]]
SEXP sample_gibbs_cpp(const arma::vec& v_n, const arma::mat& W, 
arma::vec h_n, double alpha = 1, double beta = 1, int iter=100,
double burnin = 0.5){
... code ...
}
Run Code Online (Sandbox Code Playgroud)

然后是其他人

#include <RcppArmadillo.h>

using namespace Rcpp;
using namespace arma;
... code ...
Run Code Online (Sandbox Code Playgroud)

我的描述文件:

Package: mypackage
Title: What the …
Run Code Online (Sandbox Code Playgroud)

c++ r armadillo rcpp

4
推荐指数
1
解决办法
171
查看次数

如果添加了print语句,则相同的Rcpp函数返回不同的输出

我用Rcpp编写的C++函数给出了不同的输出,具体取决于我是否在代码中有一个Rcout或者Rprintf语句.1对于带有print语句的函数,下面的代码返回,这是正确的值H_sigma_1().但是,对于H_sigma_2()没有print语句的函数,函数返回2.我在Ubuntu 16.04.1以及CentOS 6.8上测试了这个.虽然,我无法在Windows 10上重现此错误.因此,这似乎是一个Linux问题.

Rcpp代码

library(Rcpp)

cppFunction ( 
  "double H_sigma_1(IntegerVector sigma, NumericMatrix J, NumericVector h)
  {
    double first_sum, second_sum = 0;
    int n = sigma.size();

    for(int i = 0; i < n; i++)
    {
      for(int j = 0; j < n; j++)
      {
        // skip inside loop if i >= j to stop double counting
        if(i >= j) {continue;}
        first_sum += J(i, j) * sigma[i] * sigma[j];
        Rcout << first_sum …
Run Code Online (Sandbox Code Playgroud)

c++ r rcpp

3
推荐指数
1
解决办法
198
查看次数