双方.flatten()并.view(-1)压平PyTorch张量。有什么不同?
.flatten()复制张量的数据?.view(-1)更快吗?.flatten()没有不工作的情况?Ber*_*iel 15
除了@ adeelh的评论,还有另外一个区别:torch.flatten()在结果.reshape(),以及之间的差异.reshape(),并.view()有:
[...]
torch.reshape可能会返回原始张量的副本或视图。您不能指望它返回视图或副本。另一个区别是 reshape() 可以对连续和非连续张量进行操作,而 view() 只能对连续张量进行操作。另请参阅此处有关连续的含义
对于上下文:
社区请求了一段时间的flatten功能,在问题 #7743 之后,该功能在PR #8578 中实现。
uke*_*emi 14
flatten只是 的常见用例的方便别名view。1
还有其他几个:
| 功能 | 等价view逻辑 |
|---|---|
flatten() |
view(-1) |
flatten(start, end) |
view(*t.shape[:start], -1, *t.shape[end+1:]) |
squeeze() |
view(*[s for s in t.shape if s != 1]) |
unsqueeze(i) |
view(*t.shape[:i-1], 1, *t.shape[i:]) |
请注意,这flatten允许您使用start_dim和end_dim参数展平维度的特定连续子集。
reshape上在幕后是等价的。| 归档时间: |
|
| 查看次数: |
7204 次 |
| 最近记录: |