Python PyTorch中的.flatte()和.view(-1)之间有什么区别?

Python PyTorch中的.flatte()和.view(-1)之间有什么区别?,python,pytorch,Python,Pytorch,.flant()和.view(-1)都可以展平PyTorch中的张量。有什么区别 .flant()是否复制张量的数据 .view(-1)是否更快 是否存在.flant()不起作用的情况 除了@adeelh的评论之外,还有另一个区别:torch.flatte()会导致.reforme(),结果是: […]torch.reformate可能返回原始张量的副本或视图。您不能指望它返回视图或副本 另一个区别是,整形()可以对连续张量和非连续张量进行操作,而view()只能对连续张量进行操作。在这里还

.flant()
.view(-1)
都可以展平PyTorch中的张量。有什么区别

  • .flant()
    是否复制张量的数据
  • .view(-1)
    是否更快
  • 是否存在
    .flant()
    不起作用的情况

  • 除了@adeelh的评论之外,还有另一个区别:
    torch.flatte()
    会导致
    .reforme()
    ,结果是:

    • […]
      torch.reformate
      可能返回原始张量的副本或视图。您不能指望它返回视图或副本

    • 另一个区别是,整形()可以对连续张量和非连续张量进行操作,而view()只能对连续张量进行操作。在这里还可以看到关于连续的含义

    上下文:

    • 社区请求了一段时间的
      flant
      功能,之后,该功能在中实现

    • 您可以看到flatte的实现,在
      return
      行中可以看到对
      .reformate()
      的调用


    展平
    只是
    视图
    常见用例的一部分

    还有其他几种:

    作用 等效
    视图
    逻辑
    flant()
    视图(-1)
    展平(开始、结束)
    view(*t.shape[:start],-1,*t.shape[end+1:])
    挤压()
    视图(*[s代表t形中的s,如果s!=1])
    unqueze(一)
    视图(*t.shape[:i-1],1,*t.shape[i:])

    我认为它们对于
    .flatte()
    的默认参数是相同的,但是
    .flatte()
    允许您传递一个
    开始维度
    和一个
    结束维度
    ,以获得更复杂的行为。例如,
    torch.one(10,4,5,6).flatten(start\u dim=1,end\u dim=2)
    返回一个形状为
    (10,20,6)
    的张量。这个答案应该有更多的投票权