Python Pytorch中的map函数

Python Pytorch中的map函数,python,mapping,pytorch,Python,Mapping,Pytorch,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 =

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>2
h>2

从你的问题来看,你不清楚你想要实现什么

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

然而,请注意,有更优雅的方法来组合张量(例如
torch.chunk()
或操作带有卷积的补丁(例如
torch.nn.Conv2d

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))]