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, 输出的指针);