简而言之,该函数就是可以根据自己定义的坐标,按照指定的采样方式,对一张图进行采样。(采样的方式可以是最近邻的,也可以是双线性的,还有bicubic)
输入要求是4维或5维,我们以4维举例,假设输入为input(N_in,C_in,H_in, W_in),再定义grid(N_in, H_out, W_out, 2);grid就是我们要采样的各个点,其最后一个维度2就是坐标, H_out, W_out定义了采样后输出的结果图的大小,最后的输出为output(N_in,C_in,H_out, W_out)
也就是说,采样是在各个通道上单独进行的,比如输入是512个通道,则每一个通道都按照grid的坐标进行采样,所以是不会改变通道数的,但是会改变大小,因为我们把一张图看作是连续的,那么我们可以对其进行无穷尽的采样。
比如:
a为:
grid坐标为:
结果为:
但有个参数要注意,align_corners,它决定了对原图的坐标该怎么设置,这对后面的采样有影响,参考自:pytorch中的grid_sample() (icode9.com)