【问题标题】:map function in PytorchPytorch中的地图功能
【发布时间】:2018-09-27 09:27:28
【问题描述】:

Pytorch 有地图功能吗? (类似于 python 中的map)。

我需要将 1xDxhxw 张量变量映射到 1x(9D)xhxw 张量,以通过 8 个相邻嵌入来增强每个像素的嵌入。 Pytorch 中是否有任何功能可以让我高效地做到这一点?

我尝试以这种方式在 Python 中使用 map:

n, d, h, w = embedding.size()
padder = nn.ReflectionPad2d(padding=1)
embedding = padder(embedding)
embedding = map(lambda i, j, M: M[:, :, i-1:i+2, j-1:j+2], range(1, h), range(1, w), embedding)

但它不适用于w > 2h > 2

【问题讨论】:

    标签: python mapping pytorch


    【解决方案1】:

    根据您的问题,尚不清楚您要完成什么。

    请注意,PyTorch 支持完整的 Python,但您所做的是在最后一行代码中创建一个地图对象。以下内容应该适用于您的目的(?我猜):

    import torch
    import torch.nn as nn
    n, d, h, w = 20, 3, 32, 32
    embedding = torch.randn(n, d, h, w)
    padder = nn.ReflectionPad2d(padding=1)
    embedding = padder(embedding)
    
    new = [embedding[:,:, (i-1):(i+2), (j-1):(j+2)] for i, j in zip(range(1,h), range(1,w))]
    

    但是请注意,还有更优雅的方法可以对张量进行分块(例如 torch.chunk() 或对带有卷积的补丁进行操作(例如 torch.nn.Conv2d

    【讨论】:

      猜你喜欢
      • 2021-11-10
      • 1970-01-01
      • 2018-01-31
      • 2015-06-08
      • 2015-03-08
      • 1970-01-01
      • 2011-06-14
      • 2013-12-31
      • 2020-08-20
      相关资源
      最近更新 更多