【问题标题】:Assign value to sub-tensor in Pytorch在 Pytorch 中为子张量赋值
【发布时间】:2021-08-01 09:14:47
【问题描述】:

假设我有一个形状为 (3, 3, 3, 3) 的 PyTorch 张量 t,我想将所有 xyt[0, 1, x, y] 设置为 z。我注意到以下所有语法都有效:

  • t[0, 1] = z
  • t[0, 1, :] = z
  • t[0, 1, :, :] = z
  • t[0, 1, ...] = z

在幕后执行的方式有什么不同吗?这些方法中是否有任何一种优于其他方法?

【问题讨论】:

  • 我认为没有区别。您可以自己对其进行基准测试并查看。

标签: python indexing pytorch


【解决方案1】:

:... 在底层是 translated to C++ 的方式存在细微差别:

Python和C++索引类型的一对一翻译如下:

Python C++ (assuming using namespace torch::indexing)
None None
Ellipsis Ellipsis
... "..."
: or :: Slice() or Slice(None, None) or Slice(None, None, None)

但实际上这对性能没有影响。使用在您的上下文中最易读的样式。

【讨论】:

    猜你喜欢
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多