【问题标题】:Reshaping Pytorch tensor重塑 Pytorch 张量
【发布时间】:2018-10-27 17:41:33
【问题描述】:

我在 Pytorch 中有一个大小为 (24, 2, 224, 224) 的张量。

  • 24 = 批量大小
  • 2 = 代表前景的矩阵和 背景
  • 224 = 图像高度尺寸
  • 224 = 图像宽度 维度

这是执行二进制分割的 CNN 的输出。在 2 个矩阵的每个单元格中存储了该像素是前景还是背景的概率:[n][0][h][w] + [n][1][h][w] = 1 对于每个坐标

我想将它重塑为大小为(24, 1, 224, 224) 的张量。根据概率较高的矩阵,新层中的值应为01

我该怎么做?我应该使用哪个功能?

【问题讨论】:

    标签: python arrays numpy matrix pytorch


    【解决方案1】:

    使用torch.argmax()(对于 PyTorch +0.4):

    prediction = torch.argmax(tensor, dim=1) # with 'dim' the considered dimension 
    prediction = prediction.unsqueeze(1) # to reshape from (24, 224, 224) to (24, 1, 224, 224)
    

    如果 PyTorch 版本低于 0.4.0,则可以使用 tensor.max() 来返回最大值及其索引(但不能通过索引值区分):

    _, prediction = tensor.max(dim=1)
    prediction = prediction.unsqueeze(1) # to reshape from (24, 224, 224) to (24, 1, 224, 224)
    

    【讨论】:

    • 运行你的代码我得到以下错误:AttributeError: module ‘torch’ has no attribute ‘argmax’。很奇怪,我之前用过torch.argmax。我错过了什么明显的东西?
    • 我认为错误是由您当前的 Pytorch 版本引起的。我希望替代方案对您有用。干杯!
    猜你喜欢
    • 2017-09-05
    • 2018-07-19
    • 2022-07-26
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2020-10-13
    相关资源
    最近更新 更多