본문 바로가기
딥러닝&머신러닝/파이토치 기본 문법

torch.nn.functional.interpolate

by David.Ho 2023. 1. 9.
728x90
반응형

torch.nn.functional.interpolate(input, size=None, scale_factor=None, mode='nearest', align_corners=None, recompute_scale_factor=None)

input을 주어진 size또는 scale factor에 맞게 upsampling 또는 downsampling한다.
interpolation에 쓰이는 알고리즘은 model에 따라 달라진다.
현재 temporal, spatial, volumetric sampling이 지원되고 있다. 즉 예상되는 input은 3-D, 4-D, 5-D shape이다.
input dimension은 mini-batch x channels x [optional depth] x [optional height] x width로 해석된다.
resizing에 쓰이는 모드는 nearest, linear, bilinear, bicubic, trillinear, area 총 6가지가 있다.

Parameters

  • input - input tensor
  • size - output으로 기대하는 spatial size
  • scale_factor - spatial size를 위해 곱하는 수. tuple이라면 input size와 match되어야한다.
  • mode - upsampling을 위해 사용할 알고리즘
  • align_corners(bool, optional) - 기하학적으로 우리는 input과 output의 pixel을 어떤 point로 생각하기보다는 square로 생각한다. 이 option이 True로 설정되었을 때 input과 output tensor는 corner pixel의 값을 유지하면서 가장자리 pixel의 중간에 오도록 정렬된다.
    False로 설정되면 input, ouput은 가장자리 pixel의 가장자리에 가도록 정렬된다. interpolation은 edge value padding을 boundary를 넘어가는 값에 사용하고, 이러한 연산은 scale_factor가 같을 때, inpu size에 독립적이다. mode가 linear, bilinear, bicubic, trilinear일 때만 효과가 있다.
  • recompute_scale_factor(bool, optional) - interpolation 계산을 할 때에 scale_factor를 다시 계산한다. scale_factor가 parameter로 전달될 때 이 option은 output_size를 계산할 때에 사용된다. recompute_scale_factor가 False이거나 지정되지 않았을 때, 전달된 scale_factor는 interpolation 연산에 사용된다. 다르게 얘기하면 새로운 scale_factor는 interpolation 계산을 위해 output, input size에 기반해서 사용된다. scale_factor가 floating point일 때 다시 계산된 scale_facotr는 반올림과 precision issue로 달라질 수 있다.

Reference

  1. https://pytorch.org/docs/stable/generated/torch.nn.functional.interpolate.html#torch.nn.functional.interpolate
 
728x90
반응형

댓글