Exemple #1
0
def main(_):
    uscLogger = USCLogger()
    uscData = USCData(uscLogger.logger)
    uscData.findListOfYoutubeDataFiles()

    with tf.Session() as session:
        session.run(tf.global_variables_initializer())

        uscAutoEncoder = USCAutoEncoder(session, uscLogger, uscData)
        if not uscAutoEncoder.isAlreadyTrained():
            for trainingIterationNo in range(
                    uscData.youtube_data_max_category_data_file_count * 2):
                uscLogger.logger.info("AutoEncoder Training Iteration No: " +
                                      str(trainingIterationNo))
                current_youtube_data_as_list = uscData.loadNextYoutubeData()
                uscLogger.logAutoEncoderStepStart(session, trainingIterationNo)
                prepareDataTimes = []
                trainingTimes = []
                trainingLosses = []
                for current_batch_counter in range(
                        math.floor(
                            len(current_youtube_data_as_list) /
                            uscData.mini_batch_size)):
                    batch_data = current_youtube_data_as_list[
                        current_batch_counter *
                        uscData.mini_batch_size:(current_batch_counter + 1) *
                        uscData.mini_batch_size]
                    #uscLogger.logger.info("batch_data.shape: "+str(batch_data.shape))
                    trainingTime, trainingLoss, prepareDataTime = uscAutoEncoder.train(
                        batch_data)
                    trainingTimes.append(trainingTime)
                    trainingLosses.append(trainingLoss)
                    prepareDataTimes.append(prepareDataTime)

                uscLogger.logAutoEncoderStepEnd(session, prepareDataTimes,
                                                trainingTimes, trainingLosses,
                                                trainingIterationNo)
        else:
            uscLogger.logger.info(
                "No need to train AutoEncoder, already trained ... ")
        uscData.prepareData()
        uscModel = USCModel(session, uscLogger, uscData, uscAutoEncoder)
        for trainingIterationNo in range(uscModel.training_iterations):
            uscLogger.logStepStart(session, trainingIterationNo)
            prepareDataTimes = []
            trainingTimes = []
            trainingAccuracies = []
            testTimes = []
            testAccuracies = []
            for fold in np.random.permutation(uscData.fold_dirs):
                #uscLogger.logger.info("  Fold : "+str(fold))
                current_fold_data = uscData.get_fold_data(fold)
                for current_batch_counter in range(
                        int(current_fold_data.shape[0] /
                            uscData.mini_batch_size)):
                    if (
                            current_batch_counter + 1
                    ) * uscData.mini_batch_size <= current_fold_data.shape[0]:
                        batch_data = current_fold_data[
                            current_batch_counter *
                            uscData.mini_batch_size:(current_batch_counter +
                                                     1) *
                            uscData.mini_batch_size, :]
                    else:
                        batch_data = current_fold_data[
                            current_batch_counter *
                            uscData.mini_batch_size:, :]
                    if fold == "fold10":
                        ## FOLD10 is reserved for testing
                        #uscLogger.logger.info("  Testing Batch Counter : "+str(current_batch_counter))
                        testTime, testAccuracy = uscModel.test(batch_data)
                        testTimes.append(testTime)
                        testAccuracies.append(testAccuracy)
                    else:
                        #uscLogger.logger.info("  Training Batch Counter : "+str(current_batch_counter))
                        trainingTime, trainingAccuracy, prepareDataTime = uscModel.train(
                            batch_data)
                        trainingTimes.append(trainingTime)
                        trainingAccuracies.append(trainingAccuracy)
                        prepareDataTimes.append(prepareDataTime)
            uscLogger.logStepEnd(session, prepareDataTimes, trainingTimes,
                                 trainingAccuracies, testTimes, testAccuracies,
                                 trainingIterationNo)
Exemple #2
0
def main(_):
    uscLogger = USCLogger()
    uscData = USCData(uscLogger.logger)
    uscModel = USCModel(uscLogger, uscData)

    for trainingIterationNo in range(uscModel.training_iterations):

        epoch_logs = uscLogger.getNewLogDictionary()

        uscLogger.logStepStart(trainingIterationNo)

        mode = 'Training'

        ### YOUTUBE DATA
        #if trainingIterationNo % 5 == 0 and uscLogger.lastAccuracy > 0.6 :
        if (trainingIterationNo + 1) % 20000 == 0:
            while uscData.current_youtube_data is None:
                uscLogger.logger.info(
                    'Waiting 5 seconds for youtube data loader thread  ....')
                time.sleep(5)
            current_youtube_data_as_list = uscData.getNextYoutubeData()

            for current_batch_counter in range(
                    math.floor(
                        len(current_youtube_data_as_list) /
                        uscData.mini_batch_size)):

                stage_logs = uscLogger.getNewLogDictionary()
                batch_data = np.random.permutation(
                    current_youtube_data_as_list[current_batch_counter *
                                                 uscData.mini_batch_size:
                                                 (current_batch_counter + 1) *
                                                 uscData.mini_batch_size])

                if uscLogger.lastAccuracy > 1:  ## disable this branch >1
                    batch_data = uscModel.setPredictedLabel(
                        batch_data, np.ones((uscData.mini_batch_size, 1, 1)))
                    logData = uscModel.train(
                        batch_data, np.ones((uscData.mini_batch_size, 1, 1)))
                    uscLogger.appendLogData(stage_logs[mode], logData, False,
                                            mode)
                    uscLogger.appendLogData(epoch_logs[mode], logData, False,
                                            mode)
                else:
                    logData = uscModel.train(
                        batch_data, np.zeros((uscData.mini_batch_size, 1, 1)))
                    uscLogger.appendLogData(stage_logs[mode], logData, True,
                                            mode)
                    uscLogger.appendLogData(epoch_logs[mode], logData, True,
                                            mode)

                if current_batch_counter % 50 == 0:
                    uscLogger.logStepEnd(
                        'YoutubeData-' + str(current_batch_counter), mode,
                        stage_logs, trainingIterationNo)

        ### YOUTUBE DATA

        for fold in np.random.permutation(uscData.fold_dirs):

            stage_logs = uscLogger.getNewLogDictionary()

            current_fold_data = np.random.permutation(
                uscData.get_fold_data(fold))
            for current_batch_counter in range(
                    int(current_fold_data.shape[0] / uscData.mini_batch_size)):
                if (current_batch_counter + 1
                    ) * uscData.mini_batch_size <= current_fold_data.shape[0]:
                    batch_data = current_fold_data[
                        current_batch_counter *
                        uscData.mini_batch_size:(current_batch_counter + 1) *
                        uscData.mini_batch_size, :]
                else:
                    batch_data = current_fold_data[current_batch_counter *
                                                   uscData.mini_batch_size:, :]
                if fold == "fold10":
                    mode = 'Testing'
                    ## FOLD10 is reserved for testing
                    logData = uscModel.test(
                        batch_data, np.ones((uscData.mini_batch_size, 1, 1)))
                else:
                    mode = 'Training'
                    logData = uscModel.train(
                        batch_data, np.ones((uscData.mini_batch_size, 1, 1)))
                uscLogger.appendLogData(stage_logs[mode], logData, False, mode)
                uscLogger.appendLogData(epoch_logs[mode], logData, False, mode)
            uscLogger.logStepEnd(fold, mode, stage_logs, trainingIterationNo)

        uscLogger.logStepEnd('SUMMARY', mode, epoch_logs, trainingIterationNo)
        print(uscLogger.lastAccuracy)
def main(_):
 continue_training=""
 if len(sys.argv) > 1 :
     continue_training=sys.argv[1]
 uscLogger=USCLogger()
 uscData=USCData(uscLogger.logger)
 uscData.findListOfYoutubeDataFiles()
  
 config = tf.ConfigProto()
 config.gpu_options.allow_growth = True

 with tf.Session(config=config) as session:
   session.run(tf.global_variables_initializer())
   
   uscAutoEncoder=USCAutoEncoder(session,uscLogger,uscData)
   if uscAutoEncoder.alreadyTrained and continue_training!="contiune_training":
        uscLogger.logger.info("AutoEncoder is already trained by-passing this phase ... ")
   else:
    #youtube data also contains urban sound data , replicated 10 times
    for trainingIterationNo in range(uscData.youtube_data_max_category_data_file_count*10):
    #for trainingIterationNo in range(uscData.youtube_data_max_category_data_file_count):
     uscLogger.logger.info("AutoEncoder Training Iteration No: "+str(trainingIterationNo))
     current_youtube_data_as_list=np.random.permutation(uscData.loadNextYoutubeData())
     uscLogger.logAutoEncoderStepStart(session,trainingIterationNo)
     prepareDataTimes=[ ]
     trainingTimes=[ ]
     trainingLosses=[ ]
     trainingAccuracies=[ ]
     for current_batch_counter in range(math.floor(len(current_youtube_data_as_list)/uscData.mini_batch_size)) :
         batch_data=current_youtube_data_as_list[current_batch_counter*uscData.mini_batch_size:(current_batch_counter+1)*uscData.mini_batch_size]
         #uscLogger.logger.info("batch_data.shape: "+str(batch_data.shape))
         trainingTime,trainingLoss,accuracy,prepareDataTime=uscAutoEncoder.train(batch_data)
         trainingTimes.append(trainingTime)
         trainingLosses.append(trainingLoss)
         prepareDataTimes.append(prepareDataTime)
         trainingAccuracies.append(accuracy)
     uscLogger.logAutoEncoderStepEnd(session,prepareDataTimes,trainingTimes,trainingLosses,trainingAccuracies,trainingIterationNo)
  
   ### AUTO ENCODER RAINING FINISHED, STARTING TO TRAIN MODEL

   uscData.prepareData()
   uscModel=USCModel(session,uscLogger,uscData,uscAutoEncoder)
   for trainingIterationNo in range(uscModel.training_iterations):
    uscLogger.logStepStart(session,trainingIterationNo)
    prepareDataTimes=[ ]
    trainingTimes=[ ]
    trainingAccuracies=[ ]
    testTimes=[ ]
    testAccuracies=[ ]
    for fold in np.random.permutation(uscData.fold_dirs):

       if fold == "fold10":
              uscLogger.logger.info("Testing Fold : "+fold)
       else :
           uscLogger.logger.info("Training Fold : "+fold)

       #uscLogger.logger.info("  Fold : "+str(fold))
       current_fold_data=uscData.get_fold_data(fold)
       for current_batch_counter in range(int(current_fold_data.shape[0]/uscData.mini_batch_size)) :
         if (current_batch_counter+1)*uscData.mini_batch_size <= current_fold_data.shape[0] :
           batch_data=current_fold_data[current_batch_counter*uscData.mini_batch_size:(current_batch_counter+1)*uscData.mini_batch_size,:]
         else:
           batch_data=current_fold_data[current_batch_counter*uscData.mini_batch_size:,:]
         if fold == "fold10":
             ## FOLD10 is reserved for testing
              #uscLogger.logger.info("  Testing Batch Counter : "+str(current_batch_counter))
              testTime,testAccuracy=uscModel.test(batch_data)
              testTimes.append(testTime)
              testAccuracies.append(testAccuracy)
         else:
              #uscLogger.logger.info("  Training Batch Counter : "+str(current_batch_counter))
              trainingTime,trainingAccuracy,prepareDataTime=uscModel.train(batch_data)
              trainingTimes.append(trainingTime)
              trainingAccuracies.append(trainingAccuracy)
              prepareDataTimes.append(prepareDataTime)
    uscLogger.logStepEnd(session,prepareDataTimes,trainingTimes,trainingAccuracies,testTimes,testAccuracies,trainingIterationNo)
Exemple #4
0
def main(_):
    uscLogger = USCLogger()
    uscData = USCData(uscLogger.logger)
    uscModel = USCModel(uscLogger, uscData)

    uscData.prepareData()
    uscData.findListOfYoutubeDataFiles()

    for trainingIterationNo in range(uscModel.training_iterations):

        epoch_logs = uscLogger.getNewLogDictionary()

        ## youtube dta also contain fold1-9 of urban sound data
        current_youtube_data_as_list = np.random.permutation(
            uscData.loadNextYoutubeData())

        uscLogger.logStepStart(trainingIterationNo)

        mode = 'Training'
        for current_batch_counter in range(
                math.floor(
                    len(current_youtube_data_as_list) /
                    uscData.mini_batch_size)):

            stage_logs = uscLogger.getNewLogDictionary()

            batch_data = np.random.permutation(
                current_youtube_data_as_list[current_batch_counter *
                                             uscData.mini_batch_size:
                                             (current_batch_counter + 1) *
                                             uscData.mini_batch_size])

            logData = uscModel.train(batch_data)

            uscLogger.appendLogData(stage_logs[mode], logData)
            uscLogger.appendLogData(epoch_logs[mode], logData)

            if current_batch_counter % 50 == 0:
                uscLogger.logStepEnd(
                    'YoutubeData-' + str(current_batch_counter), mode,
                    stage_logs, trainingIterationNo)

        for fold in np.random.permutation(uscData.fold_dirs):

            stage_logs = uscLogger.getNewLogDictionary()

            current_fold_data = np.random.permutation(
                uscData.get_fold_data(fold))
            for current_batch_counter in range(
                    int(current_fold_data.shape[0] / uscData.mini_batch_size)):
                if (current_batch_counter + 1
                    ) * uscData.mini_batch_size <= current_fold_data.shape[0]:
                    batch_data = current_fold_data[
                        current_batch_counter *
                        uscData.mini_batch_size:(current_batch_counter + 1) *
                        uscData.mini_batch_size, :]
                else:
                    batch_data = current_fold_data[current_batch_counter *
                                                   uscData.mini_batch_size:, :]
                if fold == "fold10":
                    mode = 'Testing'
                    ## FOLD10 is reserved for testing
                    logData = uscModel.test(batch_data)
                else:
                    mode = 'Training'
                    logData = uscModel.train(batch_data)
                uscLogger.appendLogData(stage_logs[mode], logData)
                uscLogger.appendLogData(epoch_logs[mode], logData)
            uscLogger.logStepEnd(fold, mode, stage_logs, trainingIterationNo)

        uscLogger.logStepEnd('SUMMARY', mode, epoch_logs, trainingIterationNo)
def main(_):
    uscLogger = USCLogger()
    uscData = USCData(uscLogger.logger)
    uscCochlea = USCCochlea(uscLogger, uscData)
    uscModel = USCModel(uscLogger, uscData, uscCochlea)

    for trainingIterationNo in range(uscCochlea.training_iterations):
        epoch_logs = uscLogger.getNewLogDictionary()
        uscLogger.logStepStart(trainingIterationNo)
        mode = 'Training'

        ### TRAIN COCHLEA WITH YOUTUBE DATA

        if (trainingIterationNo + 1) % 10 == 0:
            mode = 'Testing'

        while uscData.current_youtube_data is None:
            uscLogger.logger.info(
                'Waiting 5 seconds for youtube data loader thread  ....')
            time.sleep(5)
        current_youtube_data_as_list = uscData.getNextYoutubeData()

        for current_batch_counter in range(
                math.floor(
                    len(current_youtube_data_as_list) /
                    uscData.mini_batch_size)):
            uscLogger.logger.info(
                str(current_batch_counter) + "/" + str(
                    math.floor(
                        len(current_youtube_data_as_list) /
                        uscData.mini_batch_size)))
            stage_logs = uscLogger.getNewLogDictionary()
            batch_data = np.random.permutation(
                current_youtube_data_as_list[current_batch_counter *
                                             uscData.mini_batch_size:
                                             (current_batch_counter + 1) *
                                             uscData.mini_batch_size])

            if mode == 'Testing':
                logData = uscCochlea.test(batch_data)
                uscLogger.appendLogData(stage_logs[mode], logData, mode)
                uscLogger.appendLogData(epoch_logs[mode], logData, mode)
                #uscLogger.logStepEnd('YoutubeData-'+str(current_batch_counter),mode,stage_logs,trainingIterationNo)
            else:
                logData = uscCochlea.train(batch_data)
                uscLogger.appendLogData(stage_logs[mode], logData, mode)
                uscLogger.appendLogData(epoch_logs[mode], logData, mode)

            uscLogger.logStepEnd('YoutubeData-' + str(current_batch_counter),
                                 mode, stage_logs, trainingIterationNo)

        uscLogger.logStepEnd('SUMMARY', mode, epoch_logs, trainingIterationNo)
        ### YOUTUBE DATA

    for trainingIterationNo in range(uscModel.training_iterations):

        epoch_logs = uscLogger.getNewLogDictionary()

        uscLogger.logStepStart(trainingIterationNo)

        mode = 'Training'

        for fold in np.random.permutation(uscData.fold_dirs):

            stage_logs = uscLogger.getNewLogDictionary()

            current_fold_data = np.random.permutation(
                uscData.get_fold_data(fold))
            for current_batch_counter in range(
                    int(current_fold_data.shape[0] / uscData.mini_batch_size)):

                if (current_batch_counter + 1
                    ) * uscData.mini_batch_size <= current_fold_data.shape[0]:
                    batch_data = current_fold_data[
                        current_batch_counter *
                        uscData.mini_batch_size:(current_batch_counter + 1) *
                        uscData.mini_batch_size, :]
                else:
                    batch_data = current_fold_data[current_batch_counter *
                                                   uscData.mini_batch_size:, :]

                #self.play(self.augment_echo(x_data[5],2.5))
                #plt.plot(batch_data[9]*100)
                #plt.show()
                #uscData.play(batch_data[9]*100)
                #sys.exit(0)

                if fold == "fold10":
                    mode = 'Testing'
                    ## FOLD10 is reserved for testing
                    logData = uscModel.test(batch_data)
                else:
                    mode = 'Training'
                    logData = uscModel.train(batch_data)
                uscLogger.appendLogData(stage_logs[mode], logData, False, mode)
                uscLogger.appendLogData(epoch_logs[mode], logData, False, mode)
            uscLogger.logStepEnd(fold, mode, stage_logs, trainingIterationNo)

        uscLogger.logStepEnd('SUMMARY', mode, epoch_logs, trainingIterationNo)
        print(uscLogger.lastAccuracy)
Exemple #6
0
def main(_):
    os.environ['TF_FORCE_GPU_ALLOW_GROWTH'] = 'true'
    uscLogger = USCLogger()
    uscData = USCData(uscLogger.logger)
    uscModel = USCModel(uscLogger, uscData)

    #config = tf.compat.v1.ConfigProto
    #config.gpu_options.per_process_gpu_memory_fraction = 0.9
    #tf.keras.backend.set_session(tf.Session(config=config));

    for trainingIterationNo in range(uscModel.training_iterations):

        epoch_logs = uscLogger.getNewLogDictionary()

        uscLogger.logStepStart(trainingIterationNo)

        mode = 'Training'

        #    ### YOUTUBE DATA
        #    #if trainingIterationNo % 5 == 0 and uscLogger.lastAccuracy > 0.6 :
        #    #if (trainingIterationNo+1) % 20 == 0  :
        #    if (trainingIterationNo+1) % 100000 == 0  : ## never use youtube data
        #      while uscData.current_youtube_data is None:
        #        uscLogger.logger.info('Waiting 5 seconds for youtube data loader thread  ....')
        #        time.sleep(5)
        #      current_youtube_data_as_list=uscData.getNextYoutubeData()
        #
        #      for current_batch_counter in range(math.floor(len(current_youtube_data_as_list)/uscData.mini_batch_size)) :
        #
        #         stage_logs=uscLogger.getNewLogDictionary()
        #         batch_data=np.random.permutation(current_youtube_data_as_list[current_batch_counter*uscData.mini_batch_size:(current_batch_counter+1)*uscData.mini_batch_size])
        #
        #         if uscLogger.lastAccuracy > 1 : ## disable this branch >1
        #           batch_data=uscModel.setPredictedLabel(batch_data,np.ones((uscData.mini_batch_size,1,1)))
        #           logData = uscModel.train(batch_data,np.ones((uscData.mini_batch_size,1,1)))
        #           uscLogger.appendLogData(stage_logs[mode],logData,False,mode)
        #           uscLogger.appendLogData(epoch_logs[mode],logData,False,mode)
        #         else :
        #           logData = uscModel.train(batch_data,np.zeros((uscData.mini_batch_size,1,1)))
        #           uscLogger.appendLogData(stage_logs[mode],logData,True,mode)
        #           uscLogger.appendLogData(epoch_logs[mode],logData,True,mode)
        #
        #         if current_batch_counter % 50 == 0:
        #           uscLogger.logStepEnd('YoutubeData-'+str(current_batch_counter),mode,stage_logs,trainingIterationNo)
        #
        #    ### YOUTUBE DATA

        stage_logs = uscLogger.getNewLogDictionary()

        current_fold_data = np.random.permutation(
            uscData.get_fold_data("training"))
        for current_batch_counter in range(
                int(current_fold_data.shape[0] / uscData.mini_batch_size)):
            if (current_batch_counter +
                    1) * uscData.mini_batch_size <= current_fold_data.shape[0]:
                batch_data = current_fold_data[current_batch_counter *
                                               uscData.mini_batch_size:
                                               (current_batch_counter + 1) *
                                               uscData.mini_batch_size, :]
            else:
                batch_data = current_fold_data[current_batch_counter *
                                               uscData.mini_batch_size:, :]

            #self.play(self.augment_echo(x_data[5],2.5))
            #plt.plot(batch_data[9]*100)
            #plt.show()
            #uscData.play(batch_data[9]*100)
            #sys.exit(0)
            mode = 'Training'
            logData = uscModel.train(batch_data)
            uscLogger.appendLogData(stage_logs[mode], logData, False, mode)
            uscLogger.appendLogData(epoch_logs[mode], logData, False, mode)
            if current_batch_counter % 50 == 0:
                uscLogger.logStepEnd("Training-" + str(current_batch_counter),
                                     mode, stage_logs, trainingIterationNo)

        current_fold_data = np.random.permutation(
            uscData.get_fold_data("test"))
        for current_batch_counter in range(
                int(current_fold_data.shape[0] / uscData.mini_batch_size)):
            if (current_batch_counter +
                    1) * uscData.mini_batch_size <= current_fold_data.shape[0]:
                batch_data = current_fold_data[current_batch_counter *
                                               uscData.mini_batch_size:
                                               (current_batch_counter + 1) *
                                               uscData.mini_batch_size, :]
            else:
                batch_data = current_fold_data[current_batch_counter *
                                               uscData.mini_batch_size:, :]

            #self.play(self.augment_echo(x_data[5],2.5))
            #plt.plot(batch_data[9]*100)
            #plt.show()
            #uscData.play(batch_data[9]*100)
            #sys.exit(0)

            mode = 'Testing'
            logData = uscModel.test(batch_data)
            uscLogger.appendLogData(stage_logs[mode], logData, False, mode)
            uscLogger.appendLogData(epoch_logs[mode], logData, False, mode)
            #if current_batch_counter % 50 == 0:
            #  uscLogger.logStepEnd("Testing-"+str(current_batch_counter),mode,stage_logs,trainingIterationNo)

        uscLogger.logStepEnd('SUMMARY', mode, epoch_logs, trainingIterationNo)