Quantile regression neural networks (QRNNs)

An implementation of quantile regression neural networks (QRNNs) developed specifically for remote sensing applications providing a flexible interface for simple training and evaluation of QRNNs.

Overview

The QRNN implementation consists of two-layers:

  • A high-level interface provided by the QRNN class

  • Backend-specific implementations of different neural network architectures to be used as models by the high-level implementation

The QRNN class

The QRNN class provides the high-level interface for QRNNs. This is all that is required to train a plain, fully-connected QRNN. The class itself implements generic functionality related to the evaluation of QRNNs and the post processing of results such as computing the PSD or the posterior mean. For the rest it acts as a wrapper around its model attribute, which encapsules all network- and DL-framework-specific code.

Backends

Currently both keras and pytorch are supported as backends for neural networks. The QRNN implementation will automatically use the one that is available on your system. If both are available you can choose a specific backend using the set_backend() function.

Neural network models

The typhon.retrieval.qrnn.QRNN has designed to work with any generic regression neural network model. This aim of this was to make the implementation sufficiently flexible to allow special network architectures or customization of the training process.

This gives the user the flexibility to design custom NN models in pytorch or Keras and use them with the QRNN class. Some predefined architectures are defined in the typhon.retrieval.qrnn.models submodule.

API documentation

typhon.retrieval.qrnn.qrnn

This module provides the QRNN class, which implements the high-level functionality of quantile regression neural networks, while the neural network implementation is left to the model backends implemented in the typhon.retrieval.qrnn.models submodule.

QRNN(input_dimensions[, quantiles, model, ...])

Quantile Regression Neural Network (QRNN)

typhon.retrieval.qrnn.models.pytorch

This model provides Pytorch neural network models that can be used a backend models for the typhon.retrieval.qrnn.QRNN class.

FullyConnected(input_dimension, quantiles, arch)

Pytorch implementation of a fully-connected QRNN model.

UNet(input_features, quantiles[, ...])

Pytorch implementation of the UNet architecture for image segmentation.