如何解决pytorch中的reshape和view有什么区别??
torch.view
已经存在了很长时间。它将返回一个具有新形状的张量。返回的张量将与原始张量共享基础数据。请参阅此处的文档。
另一方面,似乎torch.reshape
最近在 0.4
版本中引入了。根据文件,这种方法将
返回具有与输入相同的数据和元素数量的张量,但具有指定的形状。如果可能,返回的张量将是输入的视图。否则,它将是副本。可以在不复制的情况下重新调整连续输入和具有兼容步幅的输入,但您不应依赖于复制与查看行为。
这意味着torch.reshape
可能会返回原始张量的副本或视图。您不能指望返回视图或副本。据开发商介绍:
如果您需要副本,请使用 clone();如果您需要相同的存储,请使用 view()。reshape()
的语义是它可能共享也可能不共享存储,并且您事先不知道。
另一个区别是reshape()
可以对连续张量和非连续张量进行view()
操作,而只能对连续张量进行操作。
解决方法
在 numpy 中,我们ndarray.reshape()
用于重塑数组。
我注意到在 pytorch 中,人们torch.view(...)
出于相同的目的使用,但同时,也有一个torch.reshape(...)
存在的。
所以我想知道它们之间有什么区别以及何时应该使用它们中的任何一个?
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。