paddlepaddle中的几个数据结构-Tensor篇

framework::Tensor

表示的是张量。他的一些接口和使用方法

形状相关的
  • dims()
    获取每个维度的一些信息,可以使用接口dims()
    比如
framework::Tensor test_tensor;
tensor.dims().size(); //表示有多少維
int batch_size = tensor.dims()[0]; //获取某一维度的大小
  • Resize(shape)
std::vector<int64_t> shape_vec({dim0, dim1, dim2});                                                        
framework::DDim shape(framework::make_ddim(shape_vec));
tensor.Resize(shape);              
  • numel()
int nums = tensor.numel(); //表示有多少个元素
  • Slice(i, j), 这个注意只能是切最外层的,返回的是从i到j-1的子张量。(从0开始计算的)
tensor.Slice(i, j);
  • 拼接
    是用内容拷贝实现的,目前实现在一个op里,concat
  • 内存拷贝
auto xxstride = framework::stride(xx.dims());                                     
StridedMemcpy<T>(context.template device_context<DeviceContext>(),                               
                       输入的数据, 输入stride, 拷贝部分dims(),                        
                      输出stride, 输出的指针);                                    
      
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容