python - 一维 PyTorch 圆形填充

标签 python machine-learning pytorch torch

对于卷积,我想在一个维度上应用圆形填充,在所有其他维度上应用零填充。我该怎么做?

对于卷积,有 28 个 channel ,并且数据在球形箱中描述。半径时间有 20 个箱子,极地时间有 20 个箱子,倾角有 20 个箱子。 圆形填充应仅适用于倾斜。

小例子

# Example:
x = torch.tensor([[1,2,3],
                  [4,5,6],
                  [7,8,9]])
y = sphere_pad(x, pad=(0, 1))

# y is now tensor([[3, 1, 2, 3, 1],
#                  [6, 4, 5, 6, 4],
#                  [9, 7, 8, 9, 7]])

我已经尝试申请了

def sphere_pad(x, pad=(1,1)):
    return x.repeat(*x.shape)[
        (x.shape[0]-pad[0]):(2*x.shape[0]+pad[0]), 
        (x.shape[1]-pad[1]):(2*x.shape[1]+pad[1])]

然后应用具有正常零填充的卷积(并且在最后一个维度中没有填充)。 这适用于一个小示例,但此方法超出了实际问题大小的 GPU 内存。 还有其他方法吗?

最佳答案

使用 numpy,您可以执行 wrap 填充,以便数组沿第二个轴包裹:

np.pad(x, ((0,0),(1,1)), mode='wrap')
array([[3, 1, 2, 3, 1],
       [6, 4, 5, 6, 4],
       [9, 7, 8, 9, 7]])

关于python - 一维 PyTorch 圆形填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64368682/

相关文章:

python - 你如何解码 Tensorflow 中的 one-hot 标签?

python - 了解 PyTorch 预测

python - 是否可以查看 pytorchtext.data.Tabulardataset 的读取数据?

python - GAE 找不到 "lib"目录?

python - TFTPy 导入,没有名为 tftpy 的模块

python - 点击: Customize "Missing argument" error handling by overriding UsageError's show function

python - Tensorflow 仅针对变量的某些元素进行最小化

通过机器学习进行优化

deep-learning - 如何修复 "RuntimeError: Function AddBackward0 returned an invalid gradient at index 1 - expected type torch.FloatTensor but got torch.LongTensor"

python - 如何在 Django/Elasticsearch/MySQL 后端之上构建 GraphQL API?