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()
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