ICNN#
- class deepinv.models.ICNN(in_channels=3, num_filters=64, kernel_dim=5, num_layers=10, strong_convexity=0.5, pos_weights=True, device='cpu')[source]#
Bases:
Module
Convolutional Input Convex Neural Network (ICNN). The network is built to be convex in its input. The model is fully convolutional and thus can be applied to images of any size.
Based on the implementation from the paper “Data-Driven Mirror Descent with Input-Convex Neural Networks.
- Parameters:
in_channels (int) – Number of input channels.
num_filters (int) – Number of hidden units.
kernel_dim – dimension of the convolutional kernels.
num_layers (int) – Number of layers.
strong_convexity (float) – Strongly convex parameter.
pos_weights (bool) – Whether to force positive weights in the forward pass.
device (str) – Device to use for the model.
- forward(x)[source]#
Define the computation performed at every call.
Should be overridden by all subclasses.
Note
Although the recipe for forward pass needs to be defined within this function, one should call the
Module
instance afterwards instead of this since the former takes care of running the registered hooks while the latter silently ignores them.