F.grid_sample
生活随笔
收集整理的這篇文章主要介紹了
F.grid_sample
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
? ? ? ? ? ?grid_sample用于在pytprch的tensor中做不規(guī)則采樣,下例從一個5*5的空間a中進行4點采樣,采樣坐標(biāo)系為(-1,1),grid取了4個角的點,為了便于觀察,填充方式為取最接近的點的取值。可以看到,a空間左上角坐標(biāo)為[-1,-1],右下角坐標(biāo)為[1,1]。取值方式有‘nearest’、‘bilinear’。當(dāng)grid為非平均間隔的坐標(biāo)點時,即可實現(xiàn)不規(guī)則采樣
import cv2 # import torch_geometric import torch import torch.nn as nn import numpy as np import torch.nn.functional as Fa = np.arange(25).reshape(5,5) a=torch.FloatTensor(list(a)).unsqueeze(0).unsqueeze(0) grid = torch.tensor([[[-1.0,-1.0],[1.0,-1.0]],[[-1.0,1.0],[1.0,1.0]]]).unsqueeze(0) # # 目的是得到一個 長寬為2的tensor # out_h = 2 # out_w = 2 # # grid的生成方式等價于用mesh_grid # # 都是(-1,1)之間插值 # new_h = torch.linspace(-1, 1, out_h).view(-1, 1).repeat(1, out_w) # new_w = torch.linspace(-1, 1, out_w).repeat(out_h, 1) # grid = torch.cat((new_h.unsqueeze(2), new_w.unsqueeze(2)), dim=2)outp = F.grid_sample(a, grid=grid, mode='nearest') # mode用bilinear時,會和周圍pad的0平均掉,不便于直接觀察print(a.size()) # (N, C, H, W) print(grid.size()) # (N, H, W, 2) print(outp.size()) # (N, C, H, W) [1, 1, 2, 2]print(a) print(grid) print(outp)""" torch.Size([1, 1, 5, 5]) torch.Size([1, 2, 2, 2]) torch.Size([1, 1, 2, 2]) tensor([[[[ 0., 1., 2., 3., 4.],[ 5., 6., 7., 8., 9.],[10., 11., 12., 13., 14.],[15., 16., 17., 18., 19.],[20., 21., 22., 23., 24.]]]]) tensor([[[[-1., -1.],[ 1., -1.]],[[-1., 1.],[ 1., 1.]]]]) tensor([[[[ 0., 4.],[20., 24.]]]])"""總結(jié)
以上是生活随笔為你收集整理的F.grid_sample的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于SSM+MySQL的校园共享单车管理
- 下一篇: “经营之圣”稻盛和夫去世,终年90岁;阿