File size: 1,553 Bytes
68d7781
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import torch

class min_max_scaler():
    def __init__(self, upper_bound=1, lower_bound=0):
        
        self.upper = upper_bound
        self.lower = lower_bound
        self.minimum = torch.ones(1) * torch.inf
        self.maximum = - torch.ones(1) *torch.inf

    def fit(self, set_maximum=0.0, set_minimum=-100.0):
        """Find min and max of given subset OR set min and max manually. 

           Since dB-spectrograms are on the scale [-100, 0] by default, default values are set to those values.



        Args:

            set_maximum (float, optional): set maximum value manually. Defaults to 0.0.

            set_minimum (float, optional): set minimum value manually. Defaults to -100.0.



        Returns:

            None: None

        """
        if set_minimum is not None and set_maximum is not None:
            self.minimum = set_minimum
            self.maximum = set_maximum
        return None
    
    def transform(self, spectrogram):
        if self.minimum == torch.inf:
            raise ValueError("Cannot transform before scaler is fitted with min-max-values")
        return (self.upper - self.lower) * (spectrogram - self.minimum) / (self.maximum - self.minimum) + self.lower
        
    def inverse_transform(self, spectrogram):
        if self.minimum == torch.inf:
            raise ValueError("Cannot inverse transform before scaler is fitted with min-max-values")
        return (spectrogram - self.lower) * (self.maximum - self.minimum) / (self.upper - self.lower) + self.minimum