pytorch下采样上采样维度无法对齐的问题

pytorch下采样上采样维度无法对齐的问题

问题如上,比方说有如下一段pytorch网络代码

model += [nn.Conv2d(ngf * mult, ngf * mult * 2, kernel_size=3, stride=2, padding=1),
                      norm_layer(ngf * mult * 2), activation]
....

# model += [nn.ConvTranspose2d(ngf * mult, int(ngf * mult / 2), kernel_size=3, stride=2, padding=1,
            #                              output_padding=1),
            #           norm_layer(int(ngf * mult / 2)), activation]
model += [nn.ConvTranspose2d(ngf * mult, int(ngf * mult / 2), kernel_size=3, stride=2, padding=1),
                      norm_layer(int(ngf * mult / 2)), activation]

这是一段非常常见的pytorch网络代码,其中对应的就是 卷积核为3 ,步长为2,pading为 1的卷积和对应的反卷积 。

如果图像输入是二的幂次方,那么上面的注释代码完全没问题,但是如果是随意的维度,那么可能就会对应的维度对不上

就要注意你的反卷集是不是加了output_padding这个字段

手册上是这么说的

 The padding argument effectively adds kernel_size - 1 - padding amount of zero padding to both sizes of the input. This is set so that when a Conv2d and a ConvTranspose2d are initialized with same parameters, they are inverses of each other in regard to the input and output shapes. However, when stride > 1, Conv2d maps multiple input shapes to the same output shape. output_padding is provided to resolve this ambiguity by effectively increasing the calculated output shape on one side. Note that output_padding is only used to find output shape, but does not actually add zero-padding to output.

原文的意思大致是说,当步长为2的时候,输入的维度和对应下采样再上采样的维度可能会对不上,对应的output_padding就是为了解决这个对不上的问题而再另一边在加上对应的维度,使得维数相同。那么这种做法,对于输入维度和输出维度本身就没有偏差的计算的时候,就会对不上。没有偏差,就是指的是,卷积维度计算,每次都刚好整除步长,这样就不会有问题。

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pytorch中,下采样可以使用几种不同的采样方法。其中一种常用的方法是使用`WeightedRandomSampler`。这个采样器可以根据样本的权重来进行下采样。在给定的权重列表中,你可以为每个样本指定一个权重值。根据这些权重,采样器会以不同的概率选择样本,从而实现下采样的目的。 使用`WeightedRandomSampler`的步骤如下: 1. 创建一个与数据集相对应的权重列表,其中每个样本都有一个对应的权重值。 2. 使用`WeightedRandomSampler`类创建一个采样器对象,并将权重列表和所需的样本数量作为参数传递给它。 3. 将采样器对象传递给`DataLoader`类的`sampler`参数,以便在加载数据时使用这个采样器进行下采样。 请注意,这里的权重列表长度应该与数据集的大小相同,并且在创建权重列表时需要按照数据集的顺序指定每个样本的权重值。在下采样过程中,采样器会根据权重列表中的权重值来决定选取哪些样本。 希望这个解答对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Pytorch中数据采样方法Sampler(torch.utils.data)(二) —— WeightedRandomSampler & SubsetRandomSampler](https://blog.csdn.net/hxxjxw/article/details/126333179)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Pytorch上下采样函数--interpolate用法](https://download.csdn.net/download/weixin_38519681/12849988)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值