Skip to content




Parent class: Module

Derived classes: -

Increases the dimension of three-dimensional maps by a specified number of times, filling new cells with values according to the selected mode (see parameters).

In contrast to deconvolution this layer is not trainable.


def __init__(self, scale=2, mode="nearest", name=None):


Parameter Allowed types Description Default
scale Union[int, tuple] Scale: a number by which the tensor dimensions will be multiplied 2
mode str New cells filling mode "nearest"
name str Layer name None


scale - possible to specify either a single scale value in depth, height and width, or a tuple (scale_d, scale_h, scale_w), where scale_d - scale value for the map depth scale_h - scale value for the map height, and scale_w - for the width;

mode - possible options: "nearest" (copies the value of the nearest cell), "linear" (uses linear interpolation according to the values of nearby cells).


Necessary imports.

import numpy as np
from PuzzleLib.Backend import gpuarray
from PuzzleLib.Modules import Upsample3D


gpuarray is required to properly place the tensor in the GPU

batchsize, maps, d, h, w = 1, 1, 3, 3, 3
data = gpuarray.to_gpu(np.random.randint(0, 10, (batchsize, maps, d, h, w)).astype(np.float32))
upsample = Upsample3D(scale=2, mode="nearest")

As mentioned above, the scale can be set different for depth, height and width (in this case, the length of the scale tuple should correspond to the number of map dimensions):

upsample = Upsample3D(scale=(2, 1, 3), mode="nearest")

With linear interpolation, the results will be different:

upsample = Upsample3D(scale=2, mode="linear")