【问题标题】:How to slice or acces a row of a Tensor?如何切片或访问张量的一行?
【发布时间】:2018-07-10 14:55:24
【问题描述】:

我有一个存储在 3D 张量中的数据集。我希望每个样本都有一个自己的张量用于分析目的。不幸的是,我只知道访问这样一个容器的 brute force 方法:

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)的张量

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

【问题讨论】:

    标签: c++ tensorflow slice


    【解决方案1】:

    我在源代码中找到了答案。每个张量都有函数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
    ...
    

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

    【讨论】:

      猜你喜欢
      • 2020-08-01
      • 1970-01-01
      • 2019-11-02
      • 1970-01-01
      • 2019-12-12
      • 1970-01-01
      • 2017-12-01
      • 2018-12-28
      • 1970-01-01
      相关资源
      最近更新 更多