pmlayer.torch.layers.PMLinear
Linear layer with partially monotone constraints for PyTorch.
class PMLinear(
num_input_dims,
num_output_dims=1,
indices_increasing=[],
indices_decreasing=[],
use_bias=True)
This layer applies a linear transformation to the incoming data \(y=Ax+b\).
The output of this layer is monotonically increasing with respect to the input features specified by indices_increasing
, and
the output of this layer is monotonically decreasing with respect to the input features specified by indices_decreasing
.
Parameters
Args |
Type |
Description |
---|---|---|
num_input_dims |
int |
The number of input features. |
num_output_dims |
int |
The number of output features. Default: |
indices_increasing |
list of int |
The list of indices of monotonically increasing features.
Default:
[] . |
indices_decreasing |
list of int |
The list of indices of monotonically decreasing features.
Default:
[] . |
use_bias |
bool |
If set to
False , the layer will not learn an additive bias.Default:
True . |
Tensor Shape
I/O |
Shape |
---|---|
Input |
(N, num_input_dims) |
Output |
(N, num_output_dims) |
N usually represents the batch size.
Example
The following code transforms input tensor x into output tensor y, and the output (the shape of y) is (128,5)
.
l = PMLinear(10, 5, indices_increasing=[2,3])
x = torch.randn(128, 10)
y = l(x)
print(y.shape)