我从文档中了解到的是,
torch.as_tensor()
和torch.asarray()
都返回与输入data
共享内存的张量,否则返回副本。我注意到参数上只有两个不同:
- 我可以隐式地将
传递到copy=False
来要求共享内存,并在无法复制时获得异常,或者我可以传递torch.asarray()
来要求副本。copy=True
- 我可以在
中指定requires_grad
。torch.asarray()
那么
torch.asarray()
是否只提供比 torch.as_tensor()
更多的功能?
但是如果我只是想获得共享内存(如果可能的话),我应该使用什么:
torch.asarray()
还是torch.as_tensor()
?性能上有什么区别吗?
So does torch.asarray() just offer more capabilities than torch.as_tensor()?
是的,基本上就是这样。
torch.as_tensor
自动尝试复制数据和自动分级信息,而 torch.asarray
使您可以更明确地控制数据复制和自动分级信息。
如果你想要默认共享内存/autograd,我只会使用
as_tensor
。据我所知,如果使用相同的内存/autograd 共享参数,两者之间没有性能差异。