예제 #1
0
 def get_initial_params(pid):
     db = get_db()
     all_hyperparams = list(get_default_hyperparams(db, pid))
     print("initial all hyperparams", all_hyperparams)
     emit('get_default_hyperparams',
          all_hyperparams,
          namespace='/experiments')
예제 #2
0
def hyperparam(pid, expid):

    db = get_db()
    hyperdict = getHyperparamDict(db, expid)
    default_params = list(get_default_hyperparams(db, pid))

    return render_template('run/hyperparam.html', pid=pid, expid=expid, hyperdict=hyperdict, default_params=default_params)
예제 #3
0
    def del_default_param(key, pid):
        print("key", key)
        print("pid", pid)
        db = get_db()
        del_default_hyperpram(db, pid, key)

        all_hyperparams = list(get_default_hyperparams(db, pid))

        emit('get_default_hyperparams',
             all_hyperparams,
             namespace='/experiments')
예제 #4
0
def default_hyperparams(pid):
    db = get_db()
    print("para name:", request.args.get("para_name"))
    para_name = request.args.get("para_name")
    para_key = request.args.get("para_key")
    para_value = request.args.get("para_value")

    set_default_hyperparam(db, pid, para_name, para_key, para_value)
    all_hyperparams = list(get_default_hyperparams(db, pid))
    print(all_hyperparams)
    # all_hyperparams = json.dumps(all_hyperparams)
    return jsonify(x= all_hyperparams)
예제 #5
0
    def add_default_param(data, pid):
        db = get_db()
        print("arg1", data)
        print("pid:", pid)

        # update db
        set_default_hyperparam(db, pid, data["para_name"], data["para_key"],
                               data["para_value"])
        all_hyperparams = list(get_default_hyperparams(db, pid))

        emit('get_default_hyperparams',
             all_hyperparams,
             namespace='/experiments')
예제 #6
0
def create(pid):
    exp_form = CreateExperiment_form()
    db = get_db()

    #
    col_gans = (db["gantypes"].find({},{"_id":0}))
    col_exp = db["experiments"] # experiments table
    col_exp.create_index([("name", pymongo.ASCENDING), ("pid", pymongo.ASCENDING)], unique=True) # name unique index

    all_exps = col_exp.find({"pid":pid})

    gan_types = []

    for g in col_gans:
        print("gggg=", g)
        gan_types.append((g["name"], g["name"]))
        
    print(gan_types)
    exp_form.ganType.choices = gan_types
    error = None
    #all_projects = col.find({})

    # load default hyper params
    all_hyperparams = list(get_default_hyperparams(db, pid))

    
    default_para_list = list(get_default_hyperparams(db, pid))

    #print(all_projects)

    #all_projects = list(all_projects)

    # test_project = {"p1":"test1", "p2":"test2"}

    # if this for loop print outputs -
    # web page will not print outputs
    #for p in all_projects:
     #   print(p)

     
    if exp_form.validate_on_submit():

        try:
            if error is None:
                exp_name = exp_form.expName.data
                exp_gan = exp_form.ganType.data
                exp_pro_path = db.projects.find_one({"_id":ObjectId(pid)})["path"]
                print(exp_pro_path)
                print("exp gan=", exp_gan)

                #paths
                exp_path = os.path.join(exp_pro_path, exp_name)
                exp_models_path = os.path.join(exp_pro_path, exp_name + "/models")
                exp_output_path = os.path.join(exp_pro_path, exp_name + "/output")

                os.mkdir(exp_path)
                os.mkdir(exp_models_path)
                os.mkdir(exp_output_path)


                # initialize exp inforamtion
                exp_dict = {"name":exp_name, "type":exp_gan, "pid": pid, "status": "TRAIN", 
                            "path":exp_path, "models_path":exp_models_path, "output_path": exp_output_path , "iters": 0,
                            "current_epoch": 0, "dataloader_size": 0}

                # modify exp_dict with default parameters
                exp_para_list = get_default_exp_para(db, pid)
                print("exp para list=", exp_para_list)

                for exp_para in exp_para_list:
                    print("exp para000=====", exp_para) 
                    exp_dict.update({exp_para["para_key"]: exp_para["para_value"]})

                # insert exp dict
                x = col_exp.insert_one(exp_dict)

                # add additional data to experiments collection

                #addInfoToExp

                # initialize train settings
                dict_settings = {"num_epochs": 0, "checkpoint_interval": 0, "checkpoint_type":"EPOCH"}
                set_train_settings(db, str(x.inserted_id), dict_settings)

                print(x.inserted_id) #out.inserted_id
                # flash(x.inserted_id) # remove this one, if redirect the page
                #return redirect(url_for('experiments.create'))



        except Exception as e:
            flash(e)

    return render_template('experiments/create.html', form=exp_form, pid=pid, exps=all_exps)