tensorly.tenalg.proximal
.soft_thresholding
-
soft_thresholding
(tensor, threshold)[source] Soft-thresholding operator
sign(tensor) * max[abs(tensor) - threshold, 0]Parameters: tensor : ndarray
threshold : float or ndarray with shape tensor.shape
- If float the threshold is applied to the whole tensor
- If ndarray, one theshold is applied per elements, 0 values are ignored
Returns: ndarray
thresholded tensor on which the operator has been applied
See also
inplace_soft_thresholding
- Inplace version of the soft-thresholding operator
svd_thresholding
- SVD-thresholding operator
Examples
Basic shrinkage
>>> import tensorly.backend as T >>> from tensorly.tenalg.proximal import soft_thresholding >>> tensor = T.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 = T.tensor([[0, 0, 1], [1, 0, 1]]) >>> soft_thresholding(tensor, mask*1.1) array([[ 1. , -2. , 0.4], [-2.9, 3. , 0. ]])