我从文档中了解到,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()
?性能上有什么区别吗?
是的,基本上就是这样。
torch.as_tensor
自动尝试复制数据和自动求导信息,同时torch.asarray
让您对数据复制和自动求导信息进行更明确的控制。如果您希望默认使用共享内存/自动求导,我只会使用
as_tensor
。据我所知,只要使用相同的内存/自动求导共享参数,两者之间的性能没有差异。为了提供更多背景信息,我认为
torch.asarray()
和之间的真正“区别”torch.as_tensor()
在于前者是标准Array API的一部分,而后者不是。换句话说,这两个函数并不是针对不同的用例,而是有标准和非标准的方式来做同一件事。