我正在编写一个用于统计分析和机器学习 (ML) 的 R 包,该包通常非常慢。它很慢,因为它涉及训练和预测模型,包括统计和机器学习。我的包与模型无关,我的意思是它与 R 中的任何其他模型训练和预测包接口,以重新训练他们的模型并使用他们的模型进行预测。经过广泛的分析和代码重构(主要是通过尽可能多地转换为向量化和矩阵运算),我发现无法通过重构进一步加快速度的慢点归结为以下代码:
我想知道Rcpp是否可以帮助加快我的情况。请注意我在这里没有问什么:
我对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 无法帮助您解决问题,原因如下。”
谷歌 recaptcha 的两个版本(V2、V3)均设置第三方 cookie。您可能知道 Chrome 将在 2024 年阻止第三方 cookie 的使用。届时 recaptcha 会起作用吗?还是必须更改用户端的实现?
提前致谢
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没有公共复制因子。
我希望获得同一字母但在字符串中不同位置的代码,依赖于Arabic Presentation Forms-B reference. 例如,如下所示的字符串:
“\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我的问题如下:
\nHarfBuzz 库允许这种操作吗?如果“是”,使用哪个函数来完成该任务?
\n我一直在尝试一些只是为了好玩,但我偶然发现了以下方法的问题。问题是我在生成的范围内两次得到零值。我错过了什么?我没有正确使用范围还是与 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) 我正在使用 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) 我的 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) 我在为 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年前)的这些答案,但这些答案没有帮助。
我一直在查看一些代码,这些代码有一个奇怪的优化错误,在这个过程中,偶然发现了 中的错误条件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) 目前我有这段代码,运行良好:
#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 *) …