tensorly.tenalg.proximal
.soft_thresholding
- soft_thresholding(tensor, threshold)[source]
Soft-thresholding operator
sign(tensor) * max[abs(tensor) - threshold, 0]
- Parameters:
- tensorndarray
- thresholdfloat or ndarray with shape tensor.shape
If float the threshold is applied to the whole tensor
If ndarray, one threshold is applied per elements, 0 values are ignored
- Returns:
- ndarray
thresholded tensor on which the operator has been applied
See also
svd_thresholding
SVD-thresholding operator
Examples
Basic shrinkage
>>> import tensorly.backend as T >>> from tensorly.solvers.proximal import soft_thresholding >>> tensor = tl.tensor([[1, -2, 1.5], [-4, 3, -0.5]]) >>> soft_thresholding(tensor, 1.1) array([[ 0. , -0.9, 0.4], [-2.9, 1.9, 0. ]])
Example with missing values
>>> mask = tl.tensor([[0, 0, 1], [1, 0, 1]]) >>> soft_thresholding(tensor, mask*1.1) array([[ 1. , -2. , 0.4], [-2.9, 3. , 0. ]])