问题列表 - 第318060页

Rcpp 可以用来加速对其他 R 函数的调用吗?

我正在编写一个用于统计分析和机器学习 (ML) 的 R 包,该包通常非常慢。它很慢,因为它涉及训练和预测模型,包括统计和机器学习。我的包与模型无关,我的意思是它与 R 中的任何其他模型训练和预测包接口,以重新训练他们的模型并使用他们的模型进行预测。经过广泛的分析和代码重构(主要是通过尽可能多地转换为向量化和矩阵运算),我发现无法通过重构进一步加快速度的慢点归结为以下代码:

  • 从其他 R 包调用预测函数。我的主程序可能会调用预测函数数千次,因此即使需要 0.1 秒的预测函数也可能导致我的函数需要花费几分钟甚至几个小时才能运行。
  • 从其他 R 包中调用训练模型。我的一些程序将输入模型重新训练 100 到 1000 次。因此,1 秒的模型训练时间大约需要 17 分钟才能运行。比这更慢的训练时间变得非常难以管理。

我想知道Rcpp是否可以帮助加快我的情况。请注意我在这里没有问什么:

  • 我并不是在问我是否真的需要多次运行和预测模型。我正在单独探讨这个重要问题;我确实在努力尽可能地减少这些需求。因此,我的提问是基于这样的假设:我确实需要经常运行模型和预测。
  • 我当然打算实现并行处理来帮助缓解问题,但这只是一个有限的解决方案。即使某些用户拥有多达 10 个物理计算机核心(很少有用户拥有),将我上面给出的示例速度除以 10 仍然会导致代码缓慢。我正在尝试走得更远。并行处理将是我能做的任何其他事情的额外解决方案。

我对Rcpp是否有帮助的主要疑问是,最慢的代码是当我调用其他包的 R 函数时。我已经阅读了大量有关 Rcpp 的文章,甚至正在参加有关该主题的 DataCamp 课程。然而,从我目前对 Rcpp 的探索来看,尽管许多资料解释了为什么我们要使用 Rcpp(以加速缓慢的 R 代码),但我无法找到任何资料来清楚地说明 Rcpp 无法帮助解决哪些问题。

据我所知,Rcpp 在调用 R 函数时无法提供任何加速。减慢我的代码速度的函数是由其他包编写的函数。例如,我有一篇文章演示了我的包功能,分别使用nnet::nnet()和nnet::predict.nnet()来训练和预测神经网络,以及分别使用gbm::gbm()和gbm::predict.gbm()来训练和预测梯度增强机。有没有办法使用Rcpp来优化这些函数的调用?

如果我可以Rcpp::cppFunction()实时调用来接收这些函数,将它们编译为 C++,然后继续用我的程序执行它们,那么这可能是一个可行的解决方案。但这对于 Rcpp 来说可能吗?我将不胜感激这里的任何指导。我愿意接受一个明确解释的答案:“不,Rcpp 无法帮助您解决问题,原因如下。”

algorithm optimization r rcpp

0
推荐指数
1
解决办法
102
查看次数

Chrome 阻止使用第三方 cookie 后,Google reCaptcha 还能工作吗?

谷歌 recaptcha 的两个版本(V2、V3)均设置第三方 cookie。您可能知道 Chrome 将在 2024 年阻止第三方 cookie 的使用。届时 recaptcha 会起作用吗?还是必须更改用户端的实现?

提前致谢

google-chrome recaptcha third-party-cookies

8
推荐指数
0
解决办法
818
查看次数

成员函数调用与构造函数的链接

class A {
  public:
    A(void) =default;

    A& foo(void)
    {
      return *this;
    }
};

int main(int, char**)
{
  A a =A{}.foo();
  A b{};
  A c{}.foo();

  return 0;
}
Run Code Online (Sandbox Code Playgroud)
C:\temp\cpp>clang test.cpp
test.cpp:15:8: error: expected ';' at end of declaration
   15 |   A c{}.foo();
      |        ^
      |        ;
1 error generated.
Run Code Online (Sandbox Code Playgroud)

为什么编译器会抱怨A c{}.foo()?

有没有办法避免分配?

我知道在 中A a =A{}.foo(),编译器会优化掉临时的,但可能A没有公共复制因子。

c++

0
推荐指数
1
解决办法
78
查看次数

字符串中阿拉伯字符的表示

我希望获得同一字母但在字符串中不同位置的代码,依赖于Arabic Presentation Forms-B reference. 例如,如下所示的字符串:

\n

“\xd9\x85\xd9\x85\xd9\x85\xd9\x85”

\n

在此示例中,我们有与代码 0645 相对应的相同字母“\xd9\x85”。但是,根据字符串中的位置,它采用不同的字形代码(或表示形式,或任何名称)。前面的字符串结构如下(从右到左):

\n

位置 4 \xe2\x86\x92 FEE3(初始)

\n

位置 3 \xe2\x86\x92 FEE4(内侧)

\n

位置 2 \xe2\x86\x92 FEE2(最终)

\n

位置 1 \xe2\x86\x92(空格)

\n

位置 0 \xe2\x86\x92 FEE1(隔离)

\n

我的问题如下:

\n

HarfBuzz 库允许这种操作吗?如果“是”,使用哪个函数来完成该任务?

\n

c++ harfbuzz

7
推荐指数
0
解决办法
122
查看次数

使用 C++ 范围生成唯一的随机数

我一直在尝试一些只是为了好玩,但我偶然发现了以下方法的问题。问题是我在生成的范围内两次得到零值。我错过了什么?我没有正确使用范围还是与 unordered_set 有关?

    auto rng = 
    std::views::iota(0) | 
    std::views::transform([](size_t){ return rand() % 26; }) |
    std::views::filter([u = std::unordered_set<size_t>()](size_t i) mutable { return !u.emplace(i).second; }) |
    std::views::take(15);

    for (auto&& x : rng) { 
        std::cout << x << std::endl;
    }
Run Code Online (Sandbox Code Playgroud)

c++ c++20 std-ranges

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

R:将图的各个部分合并在一起

我正在使用 R 编程语言。

我有下面的“树”,它描述了抛硬币游戏的结果(从 5 点开始,每轮有 0.5 个 +1 的概率和 0.5 个 -1 的概率):

outcomes <- c(-1, 1)  

combinations <- expand.grid(rep(list(outcomes), 10))
colnames(combinations) <- paste("Turn", 1:10)

library(data.tree)

generate_tree <- function(node, depth, total) {
    if (depth == 0) {
        node$Set(total = total)
        return(node)
    } else {
        for (outcome in outcomes) {
            child <- node$AddChild(name = as.character(total + outcome), total = total + outcome)
            generate_tree(child, depth - 1, total + outcome)
        }
        return(node)
    }
}

root <- Node$new("Start", total = 5)

root …
Run Code Online (Sandbox Code Playgroud)

tree r graph

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

气流数据库迁移给出 TypeError: SqlAlchemySessionInterface.__init__() 缺少 6 个必需的位置

我的 CICD 管道中有一个步骤,用于安装气流来测试 dags 加载。从今天早上开始,效果很好。步骤如下:

    - apt update -y
    - pip install --upgrade pip
    - pip install apache-airflow==2.7.3
    - export PATH=/root/.local/bin/:$PATH
    - airflow db migrate 
    - export AIRFLOW_HOME=/root/airflow
    - airflow variables import environments/local.json
    - python3 -m pytest -s dags/
Run Code Online (Sandbox Code Playgroud)

从今天早上开始,我在数据库初始化期间收到以下错误

文件“/usr/local/lib/python3.11/site-packages/airflow/utils/db.py”,第 700 行,在 _get_flask_db AirflowDatabaseSessionInterface(app=flask_app, db=db, table="session", key_prefix=" ") 类型错误:SqlAlchemySessionInterface。init () 缺少 6 个必需的位置参数:'sequence'、'schema'、'bind_key'、'use_signer'、'permanent' 和 'sid_length'

这里是完整的回溯:

  File "/usr/local/bin/airflow", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/usr/local/lib/python3.11/site-packages/airflow/__main__.py", line 57, in main
    args.func(args)
  File "/usr/local/lib/python3.11/site-packages/airflow/cli/cli_config.py", line 49, in command
    return …
Run Code Online (Sandbox Code Playgroud)

sqlalchemy flask airflow

11
推荐指数
2
解决办法
6332
查看次数

Django locale .po 文件未显示在 locales 文件夹中

我在为 Django 应用程序设置语言环境时遇到了问题。当我运行django-admin的makemessages命令时,我的文件夹中没有.po显示结果文件{project_root}/locales。

以下是我设置区域设置所遵循的步骤:

在项目根目录中创建 locale/ 文件夹

对settings.py的更改

from os.path import join as osjoin

MIDDLEWARE = [
    ...
    'django.middleware.locale.LocaleMiddleware',
    ...
]


USE_I18N = True

LOCALE_PATHS = [
    osjoin(BASE_DIR, 'locale'),
]
Run Code Online (Sandbox Code Playgroud)

解决了缺少依赖项的问题 必须安装GNU gettext (适用于 Windows)并将其添加到系统 PATH 中。

我运行的命令

python manage.py makemessages -l fr
Run Code Online (Sandbox Code Playgroud)

还尝试过:

django-admin makemessages -l fr
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用fr_FR标签,没有改变任何东西。

两者都会产生此输出消息,但没有添加文件locales/:

processing locale fr
Run Code Online (Sandbox Code Playgroud)

我还迷信地尝试以管理员身份运行该命令,但没有改变太多。

我也知道同一个问题(9年前)的这些答案,但这些答案没有帮助。

python django locale gettext

6
推荐指数
1
解决办法
113
查看次数

非正规毛刺的 strtod 边缘

我一直在查看一些代码,这些代码有一个奇怪的优化错误,在这个过程中,偶然发现了 中的错误条件strtod(),它与 中的行为不同strtof(),就在非正规值的边缘。的行为strtof()对我来说似乎完全合理,但事实strtod()并非如此!具体来说,它返回-0.0输入值"-0x1.fffffffffffffp-1023"。

"-0x1.ffffffffffffep-1023"这是在正确解码的表示中设置为 1 的一个额外位。更奇怪的是,添加额外的尾随数字会得到一个值2 -1018,我无法解释。在我看来,从非正规浮点数过渡到正常浮点数的特殊边缘情况处理不正确,导致值为零。

谁能解释额外的额外数字引起的另一个奇怪的数字?

MSC 2022 和 Intel 2023 上的故障相同

用于双打和输出的示例代码 MRE(浮点数按您的预期工作)

// strtod() fails to handle edge case overflow from denormals correctly
// 
// Problem manifests on both MS 2022 and Intel 2023 compilers so by design? but why???
// 
// using Windows 11 and Microsoft Visual Studio Community 2022 (64-bit) - Version 17.1.0
 
#include <math.h>
#include <stdio.h>
#include <stdlib.h> …
Run Code Online (Sandbox Code Playgroud)

c floating-point double

6
推荐指数
1
解决办法
155
查看次数

如何从 T 的移动/复制构造函数被删除并具有私有构造函数的函数返回 std::expect&lt;T, E&gt;

目前我有这段代码,运行良好:

#pragma once

#include <expected>
#include <wayland-server.h>

class Display
{
private:
    struct wl_display *ptr;

public:
    enum class Error
    {
        CannotCreateDisplay,
    };

    Display() = delete;
    Display(struct wl_display *ptr)
        : ptr{ptr}
    {
    }
    Display(const Display &) = delete;
    Display(Display &&) = delete;
    Display &operator=(const Display &) = delete;
    Display &operator=(Display &&) = delete;
    ~Display()
    {
        wl_display_destroy_clients(this->ptr);
        wl_display_destroy(this->ptr);
    }

    static std::expected<Display, Error> create()
    {
        struct wl_display *ptr{wl_display_create()};
        if (ptr == nullptr) {
            return std::unexpected{Error::CannotCreateDisplay};
        }
        return {ptr};
    }
};
Run Code Online (Sandbox Code Playgroud)

我想将Display(struct wl_display *) …

c++ constructor private public

0
推荐指数
1
解决办法
103
查看次数