trw.layers.fcnn

Module Contents

Classes

FullyConvolutional

Construct a Fully Convolutional Neural network from a base model. This provides pixel level interpolation

class trw.layers.fcnn.FullyConvolutional(dimensionality: int, input_channels: int, base_model: trw.layers.convs.ModuleWithIntermediate, deconv_filters: Sequence[int], convolution_kernels: Union[int, Sequence[int]], strides: Union[int, Sequence[int]], activation=nn.ReLU, nb_classes: Optional[int] = None, concat_mode: str = 'add', conv_filters: Optional[Sequence[int]] = None, norm_type: trw.layers.layer_config.NormType = NormType.BatchNorm, norm_kwargs: Dict = {}, activation_kwargs: Dict = {}, deconv_block_fn: trw.layers.blocks.ConvTransposeBlockType = BlockDeconvNormActivation, config: trw.layers.layer_config.LayerConfig = default_layer_config(dimensionality=None))

Bases: torch.nn.Module

Construct a Fully Convolutional Neural network from a base model. This provides pixel level interpolation

Example of a 2D network taking 1 input channel with 3 convolutions (16, 32, 64) and 3 deconvolutions (32, 16, 8): >>> import torch >>> import trw >>> convs = trw.layers.ConvsBase(dimensionality=2, input_channels=1, channels=[16, 32, 64]) >>> fcnn = trw.layers.FullyConvolutional(dimensionality=2, base_model=convs, deconv_filters=[64, 32, 16, 8], convolution_kernels=7, strides=[2] * 3, nb_classes=2) >>> i = torch.zeros([5, 1, 32, 32], dtype=torch.float32) >>> o = fcnn(i)

The following intermediate data will be created (concat_mode=’add’): input = [None, 1, 32, 32] conv_1 = [None, 16, 16, 16] conv_2 = [None, 32, 8, 8] conv_3 = [None, 64, 4, 4]

deconv_1 = [None, 32, 8, 8] deconv_2 = [None, 16, 16, 16] deconv_3 = [None, 8, 32, 32] classifier = [None, 2, 32, 32]

forward(self, x: torch.Tensor) torch.Tensor
forward_with_intermediate(self, x: torch.Tensor) Tuple[torch.Tensor, Sequence[torch.Tensor]]