gpt4 book ai didi

c++如何在不进行深度复制的情况下展平xtensor的 View ?

转载 作者:搜寻专家 更新时间:2023-10-31 02:03:34 25 4
gpt4 key购买 nike

是否可以从 xtensor 直接展平 View ?像这样的东西:

xt::xarray<double> arr3d = xt::linspace<double>(1.0, 21970.0, 21970);
arr3d.reshape({13, 13, 130});
xt::xtensor<double, 3> data = arr3d;

xt::xtensor<double, 3> data_view = xt::view(data, xt::range(9, 12),xt::range(9, 12),xt::range(9, 12));
xt::xtensor<double, 1> flat_data = xt::flatten(data_view);

如果我尝试直接展平 View ,结果会有所不同。

xt::xtensor<double, 1>  flat_data = xt::flatten(xt::view(data, xt::range(9, 12),xt::range(9, 12),xt::range(9, 12)));

我正在考虑直接扁平化,以获得更干净和优化的代码。有办法吗?还是应该在展平之前将 View 复制到辅助变量?

观察:扁平化直接输出(错误答案):
16390, 16391, 16392, 16393, 16394, 16395, 16396, 16397, 16398, 16399, 16400, 16401, 16402, 16403, 16404, 16405, 16406, 16407, 16408, 16409, 16410, 16411, 16412, 16413, 16414, 16415、16416。

在展平输出我需要的输出之前复制(内核窗口):16390, 16391, 16392, 16520, 16521, 16522, 16650, 16651, 16652, 18080, 18081, 18082, 18210, 18211, 18212, 18340, 18341, 18342, 19770, 19771, 19772, 19900, 19901, 19902, 20030, 20031, 20032

最佳答案

这看起来像一个错误,你能在 xtensor's repo 上打开一个问题吗?好吗?

您还可以在一行中初始化您的第一个张量并避免复制:

xt::xtensor<double, 3> = xt::linspace<double>(1.0, 21970.0, 21970).reshape({13, 13, 130});

关于c++如何在不进行深度复制的情况下展平xtensor的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55229180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com