audtorch.metrics¶
EnergyConservingLoss¶

class
audtorch.metrics.
EnergyConservingLoss
(reduction='mean')¶ Energy conserving loss.
A two term loss that enforces energy conservation after [RPS18].
The loss can be described as:
\[\ell(x, y, m) = L = \{l_1,\dots,l_N\}^\top, \quad l_n = x_n  y_n + b_n  \hat{b_n}, \]where \(N\) is the batch size. If reduction is not
'none'
, then:\[\ell(x, y, m) = \begin{cases} \operatorname{mean}(L), & \text{if reduction} = \text{'mean';}\\ \operatorname{sum}(L), & \text{if reduction} = \text{'sum'.} \end{cases} \]\(x\) is the input signal (estimated target), \(y\) the target signal, \(m\) the mixture signal, \(b\) the background signal given by \(b = m  y\), and \(\hat{b}\) the estimated background signal given by \(\hat{b} = m  x\).
Parameters: reduction (string, optional) – specifies the reduction to apply to the output: ‘none’  ‘mean’  ‘sum’. ‘none’: no reduction will be applied, ‘mean’: the sum of the output will be divided by the number of elements in the output, ‘sum’: the output will be summed.  Shape:
 Input: \((N, *)\) where * means, any number of additional dimensions
 Target: \((N, *)\), same shape as the input
 Mixture: \((N, *)\), same shape as the input
 Output: scalar. If reduction is
'none'
, then \((N, *)\), same shape as the input
Examples
>>> import torch >>> _ = torch.manual_seed(0) >>> loss = EnergyConservingLoss() >>> input = torch.randn(3, 5, requires_grad=True) >>> target = torch.randn(3, 5) >>> mixture = torch.randn(3, 5) >>> loss(input, target, mixture) tensor(2.1352, grad_fn=<AddBackward0>)
PearsonR¶

class
audtorch.metrics.
PearsonR
(reduction='mean', batch_first=True)¶ Computes Pearson Correlation Coefficient.
Pearson Correlation Coefficient (also known as Linear Correlation Coefficient or Pearson’s \(\rho\)) is computed as:
\[\rho = \frac {E[(X\mu_X)(Y\mu_Y)]} {\sigma_X\sigma_Y}\]If inputs are vectors, computes Pearson’s \(\rho\) between the two of them. If inputs are multidimensional arrays, computes Pearson’s \(\rho\) along the first or last input dimension according to the batch_first argument, returns a torch.Tensor as output, and optionally reduces it according to the reduction argument.
Parameters:  reduction (string, optional) – specifies the reduction to apply to the output: ‘none’  ‘mean’  ‘sum’. ‘none’: no reduction will be applied, ‘mean’: the sum of the output will be divided by the number of elements in the output, ‘sum’: the output will be summed. Default: ‘mean’
 batch_first (bool, optional) – controls if batch dimension is first. Default: True
 Shape:
 Input: \((N, *)\) where * means, any number of additional dimensions
 Target: \((N, *)\), same shape as the input
 Output: scalar. If reduction is
'none'
, then \((N, 1)\)
Example
>>> import torch >>> _ = torch.manual_seed(0) >>> metric = PearsonR() >>> input = torch.rand(3, 5) >>> target = torch.rand(3, 5) >>> metric(input, target) tensor(0.1220)
ConcordanceCC¶

class
audtorch.metrics.
ConcordanceCC
(reduction='mean', batch_first=True)¶ Computes Concordance Correlation Coefficient (CCC).
CCC is computed as:
\[\rho_c = \frac {2\rho\sigma_X\sigma_Y} {\sigma_X\sigma_X + \sigma_Y\sigma_Y + (\mu_X  \mu_Y)^2}\]where \(\rho\) is Pearson Correlation Coefficient, \(\sigma_X\), \(\sigma_Y\) are the standard deviation, and \(\mu_X\), \(\mu_Y\) the mean values of \(X\) and \(Y\) accordingly.
If inputs are vectors, computes CCC between the two of them. If inputs are multidimensional arrays, computes CCC along the first or last input dimension according to the batch_first argument, returns a torch.Tensor as output, and optionally reduces it according to the reduction argument.
Parameters:  reduction (string, optional) – specifies the reduction to apply to the output: ‘none’  ‘mean’  ‘sum’. ‘none’: no reduction will be applied, ‘mean’: the sum of the output will be divided by the number of elements in the output, ‘sum’: the output will be summed. Default: ‘mean’
 batch_first (bool, optional) – controls if batch dimension is first. Default: True
 Shape:
 Input: \((N, *)\) where * means, any number of additional dimensions
 Target: \((N, *)\), same shape as the input
 Output: scalar. If reduction is
'none'
, then \((N, 1)\)
Example
>>> import torch >>> _ = torch.manual_seed(0) >>> metric = ConcordanceCC() >>> input = torch.rand(3, 5) >>> target = torch.rand(3, 5) >>> metric(input, target) tensor(0.0014)