我在试着深入复制张量的特定切片。假设a=torch.Tensor(1,2,3,4,5,6),b=a2:4,c=a[2,3]似乎b有深度拷贝,c是浅拷贝。但是我需要使用像2,3这样的索引数组来获得一些深拷贝切片。这有什么转机吗?我尝试了.reshape、.view、.contiguous(),但没有成功。谢谢。
发布于 2022-06-24 01:37:16
看起来视图()很有效!我使用.view()并使用简单索引(:,2:4,:)来选择连续行,而不是高级索引([:,2,3,:])。我注意到的一件事是,在使用.view()并选择想要的行之后,张量存储似乎会发生变化,而.view()之后的结果将无法再次应用另一个.view()将形状更改为另一个。
发布于 2022-06-23 08:32:53
这里有一个示例代码,但最好使用克隆函数,顺便说一句,尝试删除克隆函数以查看结果。
import torch
if __name__ == "__main__":
x = torch.tensor([1,2,3.])
x_clone = x.clone()
x_clone_b = x_clone.clone()
x.mul_(-1)
x_clone.add_(10)
print(f'x = {x}')
print(f'x_clone = {x_clone}')
print(f'x_clone_b = {x_clone_b}')
Output
'''
x = tensor([-1., -2., -3.])
x_clone = tensor([11., 12., 13.])
x_clone_b = tensor([1., 2., 3.])
'''
https://stackoverflow.com/questions/72664462
复制相似问题