【pytorch】interpolate的简单使用

interpolate是用于做插值处理的,常见用途是用于上采样(upsampling);当然也是可以做下采样的(downsampling)

官方的介绍如下
【pytorch】interpolate的简单使用_第1张图片

参数列表如下
【pytorch】interpolate的简单使用_第2张图片

简单使用

下面做简单使用的介绍

sizescale_factor两个参数只需要提供一个即可;

他们的区别是,size指定了插值后的shape;而scale_factor只是提供一个系数去做倍增或者倍减;

mode主要是指插值的算法,默认是"nearest", 它类似repeat操作,即复制最近的一个元素来实现插值,但是它必须适用于输入的张量是4维的;
另外一个常见的值是“linear”,它是做线性插值

下面是简单使用的例子

样例1

scale_factor是指定最后两维的扩展系数,如下面scale_factor=(2,2),是做输入张量的shape的最后两维,分别乘以2;

import torch
from torch.nn import functional as F

x=torch.randint(1,10, (1, 3,2,2)).type(torch.float)
print(x)
x = F.interpolate(x, scale_factor=(2,2), mode='nearest')
print(x, x.shape)

【pytorch】interpolate的简单使用_第3张图片

样例2

如果scale_factor只输入一维是否可以? 可以的。
如下样例scale_factor=(2), 它其实效果就是scale_factor=(2,2)

import torch
from torch.nn import functional as F

x=torch.randint(1,10, (1, 3,2,2)).type(torch.float)
print(x)
x = F.interpolate(x, scale_factor=(2), mode='nearest') 
print(x, x.shape)

【pytorch】interpolate的简单使用_第4张图片

样例3

不使用scale_factor,而使用size;
下面的例子里,通过size=(4,4),指定了输入张量的最后二维目标大小;实际上这个例子里,它的作用同上面的例子。

import torch
from torch.nn import functional as F

x=torch.randint(1,10, (1, 3,2,2)).type(torch.float)
print(x)

x = F.interpolate(x,size=(4,4), mode='nearest') print(x, x.shape)

【pytorch】interpolate的简单使用_第5张图片

样例4

使用mode=‘linear’; 注意输入张量需要为3维,然后插值仅作用于最后一维

import torch
from torch.nn import functional as F

x=torch.randint(1,10, (3,2,2)).type(torch.float)
print(x)
x = F.interpolate(x,size=4, mode='linear') #, scale_factor=(2)
print(x, x.shape)

【pytorch】interpolate的简单使用_第6张图片

样例5

使用scale_factor,效果同上

import torch
from torch.nn import functional as F

x=torch.randint(1,10, (3,2,2)).type(torch.float)
print(x)
x = F.interpolate(x,scale_factor=2, mode='linear') 
print(x, x.shape)

【pytorch】interpolate的简单使用_第7张图片

你可能感兴趣的:(pytorch,pytorch,深度学习,python)