gpt4 book ai didi

pytorch - 炬管挤压和批处理尺寸

转载 作者:行者123 更新时间:2023-12-03 21:16:02 25 4
gpt4 key购买 nike

这里有人知道torch.squeeze吗?函数尊重批次(例如第一)维度?从一些内联代码来看,它似乎没有......但也许其他人比我更了解内部工作原理。
顺便说一句,潜在的问题是我有形状的张量 (n_batch, channel, x, y, 1) .我想用一个简单的函数删除最后一个维度,这样我最终得到的形状是 (n_batch, channel, x, y) .
reshape 当然是可能的,甚至可以选择最后一个轴。但我想将此功能嵌入到一个层中,以便我可以轻松地将它添加到 ModuleListSequence目的。
编辑:刚刚发现 Tensorflow (2.5.0) 的函数 tf.linalg.diag是否尊重批次维度。仅供引用,您使用的每个功能可能会有所不同

最佳答案

不!挤压不尊重批次尺寸。如果在批处理维度可能为 1 时使用挤压,这是一个潜在的错误来源。经验法则是默认情况下只有 torch.nn 中的类和函数尊重批处理维度。

这让我过去很头疼。 我建议使用 reshape或仅使用 squeeze使用可选的输入维度参数。 在您的情况下,您可以使用 .squeeze(4)只删除最后一个维度。这样就不会发生任何意外。没有输入维度的挤压导致了我意想不到的结果,特别是当

  • 模型的输入形状可能会有所不同
  • 批量大小可能会有所不同
  • nn.DataParallel正在使用(在这种情况下,特定实例的批量大小可能会减少到 1)
  • 关于pytorch - 炬管挤压和批处理尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60619886/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com