gpt4 book ai didi

c++ - 如何切片或访问 Tensor 的一行?

转载 作者:行者123 更新时间:2023-11-30 05:05:06 25 4
gpt4 key购买 nike

我有一个存储在 3D 张量中的数据集。为了分析目的,我想每个样本都有一个自己的张量。不幸的是,我只知道访问此类容器的蛮力方法:

auto tensor_dataset_map = dataset.tensor<float,3>();
for(int sample = 0; sample < maxSamples; sample++)
for(int time = 0; time < periodSize; time++)
for(int feature = 0; feature < amountOfFeatures; feature++)
cout << tensor_dataset_map(sample,time,feature);

我很想避免这种情况。但是,如果我尝试使用常识来获取第一个样本 (=0) 的所有元素:

tensor_dataset_map(0) 

是一样的

tensor_dataset_map(0,0,0)

形状为 (1),我需要形状为 (1,periodSize,amountOfFeatures)

的张量

有没有一种简单的方法,我真的必须采用这种未优化的方式吗?

最佳答案

我在源代码中找到了答案。每个 Tensor 都有函数 Slice():沿第一维切片此张量。 其中需要声明参数开始切片和偏移。

换句话说,在我的案例中需要进行迭代:

cout<<dataset.Slice(0,1).tensor<float,3>()<<endl
cout<<dataset.Slice(1,2).tensor<float,3>()<<endl
cout<<dataset.Slice(2,3).tensor<float,3>()<<endl
cout<<dataset.Slice(3,4).tensor<float,3>()<<endl
...

但由于缺少其他文档,我认为这可能会被弃用

关于c++ - 如何切片或访问 Tensor 的一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48543160/

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