def run_cnn(
    arch_params,
    optimization_params,
    dataset,
    filename_params,
    visual_params,
    n_epochs=200,
    validate_after_epochs=1,
    verbose=False,
):
    net = network(filename_params=filename_params,
                  random_seed=arch_params["random_seed"],
                  verbose=verbose)

    net.init_data(dataset, outs=arch_params["outs"], verbose=verbose)

    net.build_network(arch_params=arch_params,
                      optimization_params=optimization_params,
                      verbose=verbose)

    net.create_dirs(visual_params=visual_params)

    net.train(n_epochs=n_epochs,
              validate_after_epochs=validate_after_epochs,
              verbose=verbose)
    net.test(verbose=verbose)

    net.save_network()
    """
def run_cnn( 
                    arch_params,
                    optimization_params ,
                    dataset, 
                    filename_params,
                    visual_params,
                    n_epochs = 200,
                    validate_after_epochs = 1,
                    verbose = False, 
           ):            
    net = network(  filename_params = filename_params,
                     random_seed = arch_params ["random_seed"],
                     verbose = verbose )   
               
    net.init_data ( dataset, outs = arch_params["outs"], verbose = verbose )      
    
    net.build_network(   arch_params = arch_params,
                         optimization_params = optimization_params,
                         verbose = verbose)
                         
    net.create_dirs ( visual_params = visual_params )   
                       
    net.train( n_epochs = n_epochs, 
                 validate_after_epochs = validate_after_epochs,
                 verbose = verbose )          
    net.test( verbose = verbose )
   
                              
    net.save_network ()     
    
    """
def generality_experiment(                
                    arch_params,
                    optimization_params ,
                    dataset, 
                    original_filename_params,   
                    filename_params_retrain, 
                    retrain_params,     
                    visual_params,    
                    validate_after_epochs = 1,  
                    n_epochs = 50,
                    ft_epochs = 200, 
                    verbose = False                                                                                                                              

                      ):         
                                                                                                     
    params_loaded, arch_params_loaded = load_network (filename_params ["network_save_name"] ,
                                        data_params = False, 
                                        optimization_params = False)   
 
    # retrain is used to do the dataset some wierd experiments.     
    retrain_net = network( 
                     filename_params = filename_params_retrain,
                     random_seed = arch_params ["random_seed"],
                     verbose = verbose )  
                                        
    retrain_net.init_data ( dataset = dataset , outs = arch_params ["outs"], verbose = verbose )      

    retrain_net.build_network (
                           arch_params = arch_params_loaded,
                           optimization_params = optimization_params,
                           init_params = params_loaded,
                           retrain_params = retrain_params,
                           verbose = verbose )    

    retrain_net.create_dirs ( visual_params = visual_params )   
                               
    retrain_net.train ( n_epochs = n_epochs, 
                        ft_epochs = ft_epochs,
                         validate_after_epochs = validate_after_epochs,
                         verbose = verbose)                                             
    
    retrain_net.test ( verbose = verbose )   
    
    retrain_net.save_network ()