Beispiel #1
0
def makeprediction(config_file, data_file=None, out_path=None, out_file=None, gpu=None):
    
    #Open configuration file for this network
    config = ConfigParser.ConfigParser()
    config.read(config_file)
    
    #Set the device on which to perform these computations
    if gpu:
        theano.sandbox.cuda.use(gpu)
        theano.config.nvcc.flags='-use=fast=math'
        theano.config.allow_gc=False
    else:
        device = config.get('General', 'device')
        theano.sandbox.cuda.use(device)
        if (device != 'cpu'):
            theano.config.nvcc.flags='-use=fast=math'
            theano.config.allow_gc=False
    #------------------------------------------------------------------------------

    starttime=time.clock()
    print '\nInitializing Network'
    if os.path.exists(config.get('General', 'directory')+config.get('Network', 'weights_folder')):
        network = CNN(weights_folder = config.get('General', 'directory')+config.get('Network', 'weights_folder'),
                      activation = config.get('Network', 'activation'))
    else:
        print 'Error: Weights folder does not exist. Could not initialize network'
        return;
    #------------------------------------------------------------------------------
    
    print 'Opening Data Files'
    if data_file:
        test_data = LoadData(directory = '', data_file_name = data_file)
    else:
        test_data = LoadData(directory = config.get('Testing Data', 'folders').split(','), 
                             data_file_name = config.get('Testing Data', 'data_file'))
    #------------------------------------------------------------------------------
    init_time = time.clock() - starttime
    print "Initialization = " + `init_time` + " seconds"       
                           
            
    starttime = time.clock()                 
    print 'Making Predictions'
    if out_path and out_file:
        network.predict(test_data.get_data(),
                        results_folder = out_path,
                        name = out_file)
    elif out_path:
        network.predict(test_data.get_data(),
                        results_folder = out_path,
                        name = config.get('Testing', 'prediction_file'))
    elif out_file:
        network.predict(test_data.get_data(),
                        results_folder = config.get('General', 'directory')+config.get('Testing', 'prediction_folder'),
                        name = out_file)
    else:
        network.predict(test_data.get_data(),
                        results_folder = config.get('General', 'directory')+config.get('Testing', 'prediction_folder'),
                        name = config.get('Testing', 'prediction_file'))
    pred_time = time.clock() - starttime
    #------------------------------------------------------------------------------
    print "Prediction Time   = " + `pred_time` + " seconds"
        
    test_data.close()
Beispiel #2
0
def trainnetwork(config_file):
    
    #Open configuration file for this network
    config = ConfigParser.ConfigParser()
    config.read(config_file)
    
    #Set the device on which to perform these computations
    device = config.get('General', 'device')
    theano.sandbox.cuda.use(device)
    if (device != 'cpu'):
        theano.config.nvcc.flags='-use=fast=math'
        theano.config.allow_gc=False
    #------------------------------------------------------------------------------
        
    print '\nOpening Data Files'
    #Load the data for training
    training_data = LoadData(directory = config.get('Training Data', 'folders').split(','),
                             data_file_name = config.get('Training Data', 'data_file'),
                             label_file_name = config.get('Training Data', 'label_file'),
                             seg_file_name = config.get('Training Data', 'seg_file'))
    #------------------------------------------------------------------------------
                             
    starttime=time.clock()
    #Create the network and trainer    
    if os.path.exists(config.get('General', 'directory')+config.get('Network', 'weights_folder')):
        print 'Loading Network'
        network = CNN(weights_folder = config.get('General', 'directory')+config.get('Network', 'weights_folder'),
                      activation = config.get('Network', 'activation'))
         
        print 'Loading Trainer'             
        network_trainer = Trainer(network, training_data.get_data(), training_data.get_labels(), training_data.get_segments(),
                                  chunk_size = config.getint('Training', 'chunk_size'),  
                                  batch_size = config.getint('Training', 'batch_size'),
                                  cost_func = config.get('Training', 'cost_func'),
                                  learning_method = config.get('Training', 'learning_method'),
                                  learning_rate = config.getfloat('Training', 'learning_rate'), 
                                  beta1 = config.getfloat('Training', 'beta1'),
                                  beta2 = config.getfloat('Training', 'beta2'), 
                                  damping = config.getfloat('Training', 'damping'), 
                                  trainer_folder = config.get('General', 'directory')+config.get('Training', 'trainer_folder'),
                                  log_interval = config.getint('Training', 'log_interval'),
                                  log_folder = config.get('General', 'directory')+config.get('Training', 'log_folder'))
    else:
        print 'Initializing Network'
        network = CNN(num_layers = config.getint('Network', 'num_layers'), 
                      num_filters = config.getint('Network', 'num_filters'), 
                      filter_size = config.getint('Network', 'filter_size'), 
                      activation = config.get('Network', 'activation'))
                      
        print 'Initializing Trainer'             
        network_trainer = Trainer(network, training_data.get_data(), training_data.get_labels(), training_data.get_segments(),
                                  chunk_size = config.getint('Training', 'chunk_size'),  
                                  batch_size = config.getint('Training', 'batch_size'),
                                  cost_func = config.get('Training', 'cost_func'),
                                  learning_method = config.get('Training', 'learning_method'),
                                  learning_rate = config.getfloat('Training', 'learning_rate'), 
                                  beta1 = config.getfloat('Training', 'beta1'),
                                  beta2 = config.getfloat('Training', 'beta2'), 
                                  damping = config.getfloat('Training', 'damping'), 
                                  log_interval = config.getint('Training', 'log_interval'),
                                  log_folder = config.get('General', 'directory')+config.get('Training', 'log_folder'))
                              
    init_time = time.clock() - starttime    
    #------------------------------------------------------------------------------
    print "Initialization = " + `init_time` + " seconds"
    
    starttime = time.clock()
    #Train the network
    print 'Training...\n'
    train_error = network_trainer.train(config.getint('Training', 'num_epochs'), 
                                        config.getboolean('Training', 'early_stop'), 
                                        config.getboolean('Training', 'print_updates'))
    total_time = time.clock() - starttime     
    #------------------------------------------------------------------------------   
    print "Total Time     =",total_time,"seconds"                   

    training_data.close()
    return train_error