Reusing upsample layer

If I understand correctly, the nn.Upsample layer has no weights, and so I can reuse it over and over again after defining it once. Correct?

Exactly, unless you doesn’t want to change any of the parameters.

>>> input = torch.arange(1, 5).view(1, 1, 2, 2).float()
>>> input
tensor([[[[ 1.,  2.],
          [ 3.,  4.]]]])
>>> m = nn.Upsample(scale_factor=2, mode='nearest')
>>> up_input = m(input)
>>> up_input
tensor([[[[ 1.,  1.,  2.,  2.],
          [ 1.,  1.,  2.,  2.],
          [ 3.,  3.,  4.,  4.],
          [ 3.,  3.,  4.,  4.]]]])

>>> m(up_input)
tensor([[[[1., 1., 1., 1., 2., 2., 2., 2.],
          [1., 1., 1., 1., 2., 2., 2., 2.],
          [1., 1., 1., 1., 2., 2., 2., 2.],
          [1., 1., 1., 1., 2., 2., 2., 2.],
          [3., 3., 3., 3., 4., 4., 4., 4.],
          [3., 3., 3., 3., 4., 4., 4., 4.],
          [3., 3., 3., 3., 4., 4., 4., 4.],
          [3., 3., 3., 3., 4., 4., 4., 4.]]]])