WilL846 2023-10-31 23:43 采纳率: 75%
浏览 15
已结题

pytorch grid_sample问题

有一个尺寸为N x C x H x W的张量inputs,一个尺寸为 N x H x W x 2张量sample,将inputs通过F.grid_sample(inputs, samples, padding_mode = "zeros")的方式采样得到输出outputs,outputs中一些元素由于采样超出inputs边界被设为零,现有一个尺寸为N x C x H x W的张量x,我希望将张量x中与outputs中被设为零的元素相同位置的元素也设为零,该怎么做,也就是说我希望通过sample获得一个mask来将x中对应位置的元素变成零

  • 写回答

2条回答 默认 最新

  • 木头人123。 2023-11-01 09:20
    关注

    你可以使用如下步骤来达到你的目标:

    1. 创建一个全1张量,它的尺寸与inputs相同。
    2. 使用F.grid_sample()函数,将这个全1张量与samples一起采样得到一个mask。
    3. 将得到的mask张量与x进行逐元素乘法。

    在PyTorch中,你可以通过如下代码实现这个过程:

    import torch
    import torch.nn.functional as F
    
    N, C, H, W = inputs.size()
    
    # Step 1: 创建一个全1张量
    ones = torch.ones_like(inputs)
    
    # Step 2: 采样得到mask
    mask = F.grid_sample(ones, samples, padding_mode="zeros")
    
    # Step 3: 将mask与x进行逐元素乘法
    x_masked = x * mask
    

    在上述代码中,F.grid_sample()函数将全1张量onessamples一起采样,得到一个新的mask张量。这个mask张量的元素值与outputs中的元素一一对应,如果outputs中的某个元素为0(表示采样超出边界),那么mask张量中的对应元素也为0。然后,我们将mask张量与x进行逐元素乘法,得到的x_masked就是你想要的结果。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月9日
  • 已采纳回答 11月1日
  • 创建了问题 10月31日

悬赏问题

  • ¥50 安装华大九天aether
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证