我有一个存储在3D Tensor中的数据集。我希望每个样本都有一个自己的张量用于分析目的。不幸的是,我只知道访问这样一个容器的强力方法:
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)
有没有一种简单的方法,我真的必须采用这种未经优化的方式吗?
答案 0 :(得分:1)
我在源代码中找到了答案。每个Tensor都有函数Slice(): Slice this tensor along the 1st dimension.
,其中需要说明切片和偏移的参数开始。
换句话说,在我的情况下迭代需要:
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
...
但是因为缺少其他文档,我认为这可能会被弃用