def generate_train(self):
        '''Generate mini-batch data for training. 
        
        Returns:
          batch_data_dict: dict containing audio_name, feature and target
        '''
        batch_size = self.batch_size
        audio_indexes = np.array(self.train_audio_indexes)
        self.random_state.shuffle(audio_indexes)
        pointer = 0

        while True:
            # Reset pointer
            if pointer >= len(audio_indexes):
                pointer = 0
                self.random_state.shuffle(audio_indexes)

            # Get batch audio_indexes
            batch_audio_indexes = audio_indexes[pointer: pointer + batch_size]
            pointer += batch_size

            batch_data_dict = {}

            batch_data_dict['audio_name'] = \
                self.data_dict['audio_name'][batch_audio_indexes]
            
            batch_feature = self.data_dict['feature'][batch_audio_indexes]
            batch_feature = self.transform(batch_feature)
            batch_data_dict['feature'] = batch_feature
            
            sparse_target = self.data_dict['target'][batch_audio_indexes]
            batch_data_dict['target'] = sparse_to_categorical(
                sparse_target, self.in_domain_classes_num)
            
            yield batch_data_dict
    def generate_validate(self, data_type, source, max_iteration=None):
        '''Generate mini-batch data for training. 
        
        Args:
          data_type: 'train' | 'validate'
          source: 'a' | 'b' | 'c'
          max_iteration: int, maximum iteration to validate to speed up validation
        
        Returns:
          batch_data_dict: dict containing audio_name, feature and target
        '''
        
        batch_size = self.batch_size
        
        if data_type == 'train':
            audio_indexes = np.array(self.train_audio_indexes)
        elif data_type == 'validate':
            audio_indexes = np.array(self.validate_audio_indexes)
        else:
            raise Exception('Incorrect argument!')
            
        audio_indexes = self.get_source_indexes(
            audio_indexes, self.data_dict, source)
            
        iteration = 0
        pointer = 0
        
        while True:
            if iteration == max_iteration:
                break

            # Reset pointer
            if pointer >= len(audio_indexes):
                break

            # Get batch audio_indexes
            batch_audio_indexes = audio_indexes[pointer: pointer + batch_size]                
            pointer += batch_size
            iteration += 1

            batch_data_dict = {}

            batch_data_dict['audio_name'] = \
                self.data_dict['audio_name'][batch_audio_indexes]
            
            batch_feature = self.data_dict['feature'][batch_audio_indexes]
            batch_feature = self.transform(batch_feature)
            batch_data_dict['feature'] = batch_feature
            
            sparse_target = self.data_dict['target'][batch_audio_indexes]
            batch_data_dict['target'] = sparse_to_categorical(
                sparse_target, self.all_classes_num)

            yield batch_data_dict
    def generate_train(self):
        '''Generate mini-batch data for training. 
        
        Returns:
          batch_data_dict: dict containing audio_name, feature and target
        '''

        while True:
            # Reset pointer
            if self.pointer >= len(self.train_audio_indexes):
                self.pointer = 0
                self.random_state.shuffle(self.train_audio_indexes)

            # Get batch audio_indexes
            batch_audio_indexes = self.train_audio_indexes[self.pointer:self.
                                                           pointer +
                                                           self.batch_size]

            self.pointer += self.batch_size

            batch_data_dict = {}

            batch_data_dict['audio_name'] = \
                self.data_dict['audio_name'][batch_audio_indexes]

            batch_feature = self.data_dict['feature'][batch_audio_indexes]
            batch_feature = self.transform(batch_feature)
            batch_data_dict['feature'] = batch_feature

            batch_feature_gamm = self.data_dict['feature_gamm'][
                batch_audio_indexes]
            batch_feature_gamm = self.transform_gamm(batch_feature_gamm)
            batch_data_dict['feature_gamm'] = batch_feature_gamm

            batch_feature_mfcc = self.data_dict['feature_mfcc'][
                batch_audio_indexes]
            batch_feature_mfcc = self.transform_mfcc(batch_feature_mfcc)
            batch_data_dict['feature_mfcc'] = batch_feature_mfcc

            batch_feature_panns = self.data_dict['feature_panns'][
                batch_audio_indexes]
            batch_feature_panns = self.transform_panns(batch_feature_panns)
            batch_data_dict['feature_panns'] = batch_feature_panns

            sparse_target = self.data_dict['target'][batch_audio_indexes]
            batch_data_dict['target'] = sparse_to_categorical(
                sparse_target, self.in_domain_classes_num)

            yield batch_data_dict
Esempio n. 4
0
    def generate_train(self):
        '''Generate mini-batch data for training. 
        
        Returns:
          batch_data_dict: dict containing audio_name, feature and target
        '''
        batch_size = self.batch_size
        audio_indexes = np.array(self.evaluation_audio_indexes)
        self.random_state.shuffle(audio_indexes)
        pointer = 0

        while True:
            # Reset pointer
            if pointer >= len(audio_indexes):
                pointer = 0
                self.random_state.shuffle(audio_indexes)

            # Get batch audio_indexes
            batch_audio_indexes = audio_indexes[pointer:pointer + batch_size]
            pointer += batch_size

            batch_data_dict = {}
            batch_data_dict_left = {}
            batch_data_dict_right = {}
            batch_data_dict_side = {}
            batch_data_dict_harmonic = {}
            batch_data_dict_percussive = {}

            batch_data_dict['audio_name'] = \
                self.data_dict['audio_name'][batch_audio_indexes]
            batch_data_dict_left['audio_name'] = \
                self.data_dict_left['audio_name'][batch_audio_indexes]
            batch_data_dict_right['audio_name'] = \
                self.data_dict_right['audio_name'][batch_audio_indexes]
            batch_data_dict_side['audio_name'] = \
                self.data_dict_side['audio_name'][batch_audio_indexes]
            batch_data_dict_harmonic['audio_name'] = \
                self.data_dict_harmonic['audio_name'][batch_audio_indexes]
            batch_data_dict_percussive['audio_name'] = \
                self.data_dict_percussive['audio_name'][batch_audio_indexes]

            batch_feature = self.data_dict['feature'][batch_audio_indexes]
            batch_feature = self.transform(batch_feature)
            batch_data_dict['feature'] = batch_feature

            batch_feature_left = self.data_dict_left['feature_left'][
                batch_audio_indexes]
            batch_feature_left = self.transform_left(batch_feature_left)
            batch_data_dict_left['feature_left'] = batch_feature_left

            batch_feature_right = self.data_dict_right['feature_right'][
                batch_audio_indexes]
            batch_feature_right = self.transform_right(batch_feature_right)
            batch_data_dict_right['feature_right'] = batch_feature_right

            batch_feature_side = self.data_dict_side['feature_side'][
                batch_audio_indexes]
            batch_feature_side = self.transform_side(batch_feature_side)
            batch_data_dict_side['feature_side'] = batch_feature_side

            batch_feature_harmonic = self.data_dict_harmonic[
                'feature_harmonic'][batch_audio_indexes]
            batch_feature_harmonic = self.transform_harmonic(
                batch_feature_harmonic)
            batch_data_dict_harmonic[
                'feature_harmonic'] = batch_feature_harmonic

            batch_feature_percussive = self.data_dict_percussive[
                'feature_percussive'][batch_audio_indexes]
            batch_feature_percussive = self.transform_percussive(
                batch_feature_percussive)
            batch_data_dict_percussive[
                'feature_percussive'] = batch_feature_percussive

            sparse_target = self.data_dict['target'][batch_audio_indexes]
            batch_data_dict['target'] = sparse_to_categorical(
                sparse_target, self.in_domain_classes_num)

            yield batch_data_dict, batch_data_dict_left, batch_data_dict_right, batch_data_dict_side, batch_data_dict_harmonic, batch_data_dict_percussive