tensorflow:reshape()可以创建副本吗?

2024-01-15

在他们的 API v4 中,torch 引入了reshape(),更加符合 numpy 的风格。以前,改变火炬张量的形状是通过view().

我想知道是否view()现在将被弃用并查看docs https://pytorch.org/docs/stable/tensors.html#torch.Tensor.view。事实证明reshape()不仅仅是 numpy 友好的别名view(),实际上,它有不同的语义。 Torch 尝试尽可能为您提供连续的内存。如果新的视图尺寸违反了连续性约束,则必须显式调用contiguous() before view(). Reshape即使违反此约束也会起作用,但会默默地复制数据。 这与 numpy 中的行为相同,其中reshape 也可以制作副本 https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.reshape.html#numpy-reshape.

一个问题view() vs reshape()火炬在这里:pytorch 中的 reshape 和 view 有什么区别? https://stackoverflow.com/questions/49643225/whats-the-difference-between-reshape-and-view-in-pytorch

如果您需要副本,请使用clone() 如果您需要相同的存储使用 看法()。 reshape() 的语义是它可以共享也可以不共享 存储并且您事先不知道。

到目前为止,仅提供火炬view()。也许是故意迫使他们的开发人员关心内存布局。这让我想知道如何reshape() https://www.tensorflow.org/api_docs/python/tf/reshape在张量流中工作。

在 torch 中,视图和副本之间的区别可能会产生复杂的错误。您假设张量共享数据,但事实并非如此。 在张量流中这个问题不应该存在。张量流张量是符号性的,不保存值。重塑只是张量流图中的一个操作。在评估图表时,占位符和变量中的数据不会改变,因此您正在处理的数据很清楚。

但我不知道这是否会损害性能。复制一个巨大的张量可能非常昂贵。使用时需要小心吗reshape(),不重复内存?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tensorflow:reshape()可以创建副本吗? 的相关文章

随机推荐