pytorch - 卷积 - 偶数和奇数大小的反卷积
问题描述
我有两个不同大小的张量要放入网络中。
C = nn.Conv1d(1, 1, kernel_size=1, stride=2)
TC = nn.ConvTranspose1d(1, 1, kernel_size=1, stride=2)
a = torch.rand(1, 1, 100)
b = torch.rand(1, 1, 101)
a_out, b_out = TC(C(a)), TC(C(b))
结果是
a_out = torch.size([1, 1, 99]) # What I want is [1, 1, 100]
b_out = torch.size([1, 1, 101])
有什么方法可以处理这个问题吗?
我需要你的帮助。
谢谢
解决方案
根据文档,这是预期的行为。当甚至检测到输入长度以获得与输入相同的长度时,可以使用填充。
像这样的东西
class PadEven(nn.Module):
def __init__(self, conv, deconv, pad_value=0, padding=(0, 1)):
super().__init__()
self.conv = conv
self.deconv = deconv
self.pad = nn.ConstantPad1d(padding=padding, value=pad_value)
def forward(self, x):
nd = x.size(-1)
x = self.deconv(self.conv(x))
if nd % 2 == 0:
x = self.pad(x)
return x
C = nn.Conv1d(1, 1, kernel_size=1, stride=2)
TC = nn.ConvTranspose1d(1, 1, kernel_size=1, stride=2)
P = PadEven(C, TC)
a = torch.rand(1, 1, 100)
b = torch.rand(1, 1, 101)
a_out, b_out = P(a), P(b)
推荐阅读
- html - 按钮提交邮件,onclick 调用调用函数,重定向到索引页面并显示消息
- android - Android ViewHolder 中的 getView 有时会返回“null”
- unity3d - 检查器中预制信息中的粗体文本 - Unity
- javascript - 几次尝试后,Axios 没有发出任何请求
- python - 我想制作一个提供标准输出的模式
- android - Android Billing 4.0.0 - 无购买结果 querySkuDetailsAsync()
- javascript - Chrome:在 URL 中发送 API 请求时,以“yyyy-MM-dd”格式发送的日期在 chrome 中更改为“yyyy-dd-MM”
- android - 当我添加一个firebase admin SDK之后我想禁用用户帐户我运行android项目我显示错误
- python - 从命令提示符删除信息
- php - oci_execute():Codeigniter 出现 ORA-00942 错误