gpt4 book ai didi

python - 如何在 PyTorch 中使用非方形填充进行反卷积网络

转载 作者:行者123 更新时间:2023-12-01 07:26:28 27 4
gpt4 key购买 nike

感谢您的关注。我希望使用 nn.ConvTranspose2d 来扩展 PyTorch 中张量的维度。(从 (N,C,4,4) 到 (N,C,8,8))但是,我发现如果我想将内核大小保持为 3,步幅为 2。我需要将填充设置为 [[0,0],[0,0],[0,1],[0,1]](只有一个HW 的边),这不是正方形。

我了解到,在tensorflow中我们可以设置填充,如[[0,0],[0,0],[0,1],[0,1]],但在torch中,padding 只能是每个维度的一个值,即两侧都有 padding。

所以,我想知道有没有办法在 PyTorch 中做到这一点?

这是一些详细代码

import torch
import torch.nn as nn

a = torch.rand([100, 80, 4, 4])
a.shape
nn.ConvTranspose2d(80, 40, kernel_size=3, stride=2, padding=0)(a).shape
nn.ConvTranspose2d(80, 40, kernel_size=3, stride=2, padding=1)(a).shape
nn.ConvTranspose2d(80, 40, kernel_size=3, stride=2, padding=(0,1,0,1))(a).shape
>>> torch.Size([100, 80, 4, 4])
>>> torch.Size([100, 40, 9, 9])
>>> torch.Size([100, 40, 7, 7])
>>> RuntimeError: expected padding to be a single integer value or a list of 2 values to match the convolution dimensions, but got padding=[0, 1, 0, 1]

最佳答案

您可以使用F.pad来自函数式 API。

b= nn.ConvTranspose2d(80, 40, kernel_size=3, stride=2, padding=1)(a)
c = F.pad(b, (0,1,0,1),"constant", 0)

关于python - 如何在 PyTorch 中使用非方形填充进行反卷积网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57422132/

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