微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

nn.ConvTranspose2d 中的 output_padding 做了什么?

如何解决nn.ConvTranspose2d 中的 output_padding 做了什么?

Conv2dTranspose 中 Output_padding 的作用是什么?请帮我理解这个?

Conv2dTranspose(1024,512,kernel_size=3,stride=2,padding=1,output_padding=1)

解决方法

根据此处的文档:https://pytorch.org/docs/stable/generated/torch.nn.ConvTranspose2d.html 当应用具有 Stride > 1 的 Conv2D 操作时,您可以获得具有不同输入的相同输出尺寸。例如,7x7 和 8x8 输入都将返回 3x3 输出且 Stride=2:

import torch

conv_inp1 = torch.rand(1,1,7,7)
conv_inp2 = torch.rand(1,8,8)

conv1 = torch.nn.Conv2d(1,kernel_size = 3,stride = 2)

out1 = conv1(conv_inp1)     
out2 = conv1(conv_inp2)
print(out1.shape)         # torch.Size([1,3,3])
print(out2.shape)         # torch.Size([1,3])

当应用转置卷积时,返回哪个输出形状是不明确的,对于stride=2的转置卷积是7x7或8x8。输出填充有助于 pytorch 使用 output_padding 参数确定 7x7 或 8x8 输出。请注意,它不会填充零或任何要输出的东西,它只是一种确定输出形状并相应地应用转置卷积的方法。

conv_t1 = torch.nn.ConvTranspose2d(1,kernel_size=3,stride=2)
conv_t2 = torch.nn.ConvTranspose2d(1,stride=2,output_padding=1)
transposed1 = conv_t1(out1)
transposed2 = conv_t2(out2)

print(transposed1.shape)      # torch.Size([1,7])
print(transposed2.shape)      # torch.Size([1,8])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。