gpt4 book ai didi

python - .contigious() 在 PyTorch 中做什么?

转载 作者:行者123 更新时间:2023-12-03 05:50:50 24 4
gpt4 key购买 nike

x.contigious() 对张量 x 有何作用?

最佳答案

PyTorch 中的张量有一些操作不会更改张量的内容,但会更改数据的组织方式。这些操作包括:

narrow(), view(), expand() and transpose()

例如:当您调用 transpose() 时,PyTorch 不会生成具有新布局的新张量,它只是修改 Tensor 对象中的元信息,以便偏移量和步幅描述了所需的新形状。在本例中,转置后的张量和原始张量共享相同的内存:

x = torch.randn(3,2)
y = torch.transpose(x, 0, 1)
x[0, 0] = 42
print(y[0,0])
# prints 42

这就是连续概念的用武之地。在上面的示例中,x是连续的,但y不是连续的,因为它的内存布局与从头开始制作的相同形状的张量不同。请注意,“连续”这个词有点误导,因为张量的内容并不是分布在不连续的内存块周围。这里字节仍然分配在一 block 内存中,但元素的顺序不同!

当您调用contigious()时,它实际上会复制张量,使其元素在内存中的顺序与使用相同数据从头开始创建的顺序相同。

通常情况下您无需担心这一点。通常,您可以安全地假设一切都会正常工作,然后等待,直到收到 RuntimeError: input is not contigious ,其中 PyTorch 需要连续张量来添加对 contigously() 的调用>.

关于python - .contigious() 在 PyTorch 中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48915810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com