我尝试在C中为PyTorchTensor做类似[0 if i〈1 else 1]的事情。我尝试使用tensor.accessor(),但它似乎需要你事先知道维度。而我想动态地传递它。有没有办法用C为Pytorch做这些?
eeq64g8w1#
看看这是否有帮助:使用Tensor迭代器:https://labs.quansight.org/blog/2020/04/pytorch-tensoriterator-internals/或者利用t.is_contiguous()/ t.contiguous()来简化横向:https://discuss.pytorch.org/t/iterating-over-tensor-in-c/60333/2
vxbzzdmp2#
c++ torch中的For循环是这样的。你也可以试试torch.where。注意,与内置操作相比,for循环可能会很慢。
auto answer = torch::zeros_like(x); auto batchCount = x.sizes()[0]; auto pointCount = x.sizes()[1]; // auto nextPoint = torch::zeros({batchCount, _pointDim}); for (int i = 0; i < batchCount; ++i) { for (int j = 1; j < _pointCount; ++j) { answer[i][j] = answer[i][j - 1] + x[i][j - 1]; } }
2条答案
按热度按时间eeq64g8w1#
看看这是否有帮助:
使用Tensor迭代器:
https://labs.quansight.org/blog/2020/04/pytorch-tensoriterator-internals/
或者利用t.is_contiguous()/ t.contiguous()来简化横向:
https://discuss.pytorch.org/t/iterating-over-tensor-in-c/60333/2
vxbzzdmp2#
c++ torch中的For循环是这样的。你也可以试试torch.where。注意,与内置操作相比,for循环可能会很慢。