histogram#

class diffsptk.Histogram(n_bin: int = 10, lower_bound: float = 0, upper_bound: float = 1, norm: bool = False, softness: float = 0.001)[source]#

See this page for details. Note that the values at the edges of the bins cannot be counted correctly in the current implementation.

Parameters:
n_binint >= 1

The number of bins, \(K\).

lower_boundfloat < U

The lower bound of the histogram, \(L\).

upper_boundfloat > L

The upper bound of the histogram, \(U\).

normbool

If True, normalizes the histogram.

softnessfloat > 0

A smoothing parameter. The smaller value makes the output closer to the true histogram, but the gradient vanishes.

References

[1]

M. Avi-Aharon et al., “DeepHist: Differentiable joint and color histogram layers for image-to-image translation,” arXiv preprint arXiv:2005.03995, 2020.

forward(x: Tensor) Tensor[source]#

Compute histogram.

Parameters:
xTensor [shape=(…, T)]

The input data.

Returns:
outTensor [shape=(…, K)]

The histogram.

Examples

>>> x = diffsptk.ramp(9)
>>> histogram = diffsptk.Histogram(n_bin=4, lower_bound=0, upper_bound=9)
>>> h = histogram(x)
>>> h
tensor([2.5000, 2.0000, 2.0000, 2.5000])
>>> histogram = diffsptk.Histogram(n_bin=4, lower_bound=-0.1, upper_bound=9.1)
>>> h = histogram(x)
>>> h
tensor([3., 2., 2., 3.])
diffsptk.functional.histogram(x: Tensor, n_bin: int = 10, lower_bound: float = 0, upper_bound: float = 1, norm: bool = False, softness: float = 0.001) Tensor[source]#

Compute histogram.

Parameters:
xTensor [shape=(…, T)]

The input data.

n_binint >= 1

The number of bins, \(K\).

lower_boundfloat < U

The lower bound of the histogram, \(L\).

upper_boundfloat > L

The upper bound of the histogram, \(U\).

normbool

If True, normalizes the histogram.

softnessfloat > 0

A smoothing parameter. The smaller value makes the output closer to the true histogram, but the gradient vanishes.

Returns:
outTensor [shape=(…, K)]

The histogram.

See also

entropy