Graph upsampling by inverting the pooling map.

Upsamples a graph by applying a pooling map in reverse. The inputs pool_map and sizes are the same as used for pooling:

pooled = pool(data, pool_map, sizes)
upsampled = unpool(pooled, pool_map, sizes)

The shorthands used below are V1: The number of vertices in the input data. V2: The number of vertices in the unpooled output data. C: The number of channels in the data.

In the following, A1 to A3 are optional batch dimensions. Only up to three batch dimensions are supported due to limitations with TensorFlow's dense-sparse multiplication.

Please see the documentation for graph_pooling.pool for a detailed interpretation of the inputs pool_map and sizes.

data A float tensor with shape [A1, ..., A3, V1, C].
pool_map A SparseTensor with the same type as data and with shape [A1, ..., A3, V1, V2]. The features for vertex v1 are computed by pooling over the entries in pool_map[A1, ..., A3, v1, :]. This function applies this pooling map in reverse.
sizes An int tensor of shape [A1, ..., A3, 2] indicating the true input sizes in case of padding (sizes=None indicates no padding): sizes[A1, ..., A3, 0] <= V1 and sizes[A1, ..., A3, 1] <= V2.
name A name for this op. Defaults to 'graph_pooling_unpool'.

Tensor with shape [A1, ..., A3, V2, C].

TypeError if the input types are invalid.
ValueError if the input dimensions are invalid.