在 Torch C++ API 中,如何快速写入张量的内部数据?
In Torch C++ API, How to write to the internal data of a tensor fastly?
我在前端使用火炬C++并希望在其中有一个具有指定值的张量。为了实现这一点,可以手动分配内存并设置值,然后使用torch::from_blob
在内存块上构建一个张量,但这对我来说似乎不够干净。
在本文档的最底部,我发现我可以使用下标直接访问和修改数据。但是,这种方法的运行时间开销很大,可能是因为下标访问会将张量的元素视为 0-d 张量。以下代码在我的机器上花费超过 2 秒(-O3
优化级别(,这对于现代 CPU 来说太长了。
torch::Tensor tensor = torch::empty({1000, 1000});
for(int i=0; i < 1000; i++)
{
for(int j=0 ; j < 1000; j++)
{
tensor[i][j] = calc_tensor_data(i,j);
}
}
有没有一种干净快捷的方法来实现这一目标?
在互联网上搜索了几个小时无果后,我脑海中有一个假设,我决定试一试。事实证明,同一文档中提到的访问器也与左值一样有效,尽管文档根本没有提到此功能。下面的代码很好,它和直接操作原始指针一样快。
torch::Tensor tensor = torch::empty({1000, 1000});
auto accessor = tensor.accessor<float,2>();
for(int i=0; i < 1000; i++)
{
for(int j=0 ; j < 1000; j++)
{
accessor[i][j] = calc_tensor_data(i,j);
}
}
相关文章:
- 使用Pybind11向Python公开Eigen::张量
- C++中的张量流对象检测
- 在官方张量流 resnet50 模型上运行 tflite 精度工具
- PyTorch C++将数据转换为张量失败
- 如何使用 c++ 更改张量流中的per_process_gpu_memory_fraction?
- 编译 GPU 的张量流示例自定义操作
- 在 Torch C++ API 中,如何快速写入张量的内部数据?
- 如何在C++中将一个特征张量乘以另一个特征张量的标量和?
- C++ ABI 兼容性问题/张量流
- 如何从内存缓冲区加载张量流图
- PyTorch C++ 前端向前返回多个张量
- 从 std::向量值创建张量<Tensor>
- 张量流错误 此文件需要编译器和库支持 ISO C++ 2011 标准
- 如何将自定义特征张量类存储到 std::vector 中?
- CUDA 高效的 nd-array(张量)切片
- 部署在张量流中训练的神经网络来火炬C++的最佳方法是什么?
- 微调张量流对象检测预训练模型
- 犰狳(C++)中的快速阵列置换(广义张量转置)
- 添加 OP 张量流调试
- 编译一个自定义的tf操作,其中输入是5d张量