示例#1
0
            y_pred = model.predict(X)
            lake_df['rmse_pred'] = y_pred
            y_act = lake_df['rmse']
            lake_df.sort_values(by=['rmse_pred'], inplace=True)
            lowest_rmse = lake_df.iloc[0]['rmse_pred']

            top_ids = [str(j) for j in lake_df.iloc[:int(k)]['site_id']]
            
            best_site = top_ids[0]

            #define target test data to use
            data_dir_target = "../../data/processed/lake_data/"+target_id+"/" 
            (_, _, tst_data_target, tst_dates_target, unique_tst_dates_target, all_data_target, all_phys_data_target, all_dates_target,
            hypsography_target) = buildLakeDataForRNN_manylakes_finetune2(target_id, data_dir_target, seq_length, n_features,
                                               win_shift = win_shift, begin_loss_ind = begin_loss_ind, 
                                               outputFullTestMatrix=True, allTestSeq=False, oldFeat=False)
            

            #useful values, LSTM params
            batch_size = all_data_target.size()[0]
            u_depths_target = np.unique(tst_data_target[:,0,0])
            n_depths = torch.unique(all_data_target[:,:,0]).size()[0]
            n_test_dates_target = unique_tst_dates_target.shape[0]


            #define LSTM model
            class LSTM(nn.Module):
                def __init__(self, input_size, hidden_size, batch_size):
                    super(LSTM, self).__init__()
                    self.input_size = input_size
示例#2
0
    ###########################33
    n_ep = 400  #number of epochs
    win_shift = 176 #how much to slide the window on training set each time
    pretrain_path = "../../../models/WRR_69Lake/"+args.lake_name+"/pretrain_experiment_trial"+str(trial)
    save_path = "../../../models/WRR_69Lake/"+args.lake_name+"/pgrnn_finetune_trial"+str(trial)

    ###############################
    # data preprocess
    ##################################
    #create train and test sets
    (trn_data, trn_dates, tst_data, tst_dates, unique_tst_dates, all_data, all_phys_data,
     all_dates, hypsography) = buildLakeDataForRNN_manylakes_finetune2(args.lake_name, \
                                                            args.data_path, \
                                                            seq_length, n_features, \
                                                            win_shift=win_shift, \
                                                            begin_loss_ind=begin_loss_ind, \
                                                            latter_third_test=True, \
                                                            outputFullTestMatrix=True, \
                                                            sparseTen=False, \
                                                            realization='none', \
                                                            allTestSeq=True)



    batch_size = trn_data.size()[0]
    n_test_dates = unique_tst_dates.shape[0]
    n_depths = torch.unique(all_data[:, :, 0]).size()[0]
    u_depths = np.unique(tst_data[:, 0, 0])

    #format training data for loading
    train_data = TemperatureTrainDataset(trn_data)
            load_path = "../../models/" + lakename + "/PGRNN_sparse_" + str(
                n_prof) + "_" + str(seed)

            ###############################
            # data preprocess
            ##################################
            #create train and test sets

            (trn_data, trn_dates, tst_data, tst_dates, unique_tst_dates,
             all_data, all_phys_data, all_dates,
             hypsography) = buildLakeDataForRNN_manylakes_finetune2(
                 lakename,
                 data_dir,
                 seq_length,
                 n_features,
                 win_shift=win_shift,
                 begin_loss_ind=begin_loss_ind,
                 outputFullTestMatrix=False,
                 allTestSeq=False,
                 sparseCustom=n_prof,
                 randomSeed=seed)
            #if error code is returned (trn data as int), skip and record id
            if isinstance(trn_data, int):
                target_id = lakename
                if trn_data == 25:
                    no_25.append(target_id)
                    continue
                elif trn_data == 30:
                    no_30.append(target_id)
                    continue
                elif trn_data == 35:
示例#4
0
#paths to save

pretrain_path = "../../models/" + lakename + "/pretrain_source_model"
save_path = "../../models/" + lakename + "/PGRNN_source_model_0.7"

###############################
# data preprocess
##################################
#create train and test sets
(trn_data, trn_dates, tst_data, tst_dates, unique_tst_dates, all_data,
 all_phys_data, all_dates,
 hypsography) = buildLakeDataForRNN_manylakes_finetune2(
     lakename,
     data_dir,
     seq_length,
     n_features,
     win_shift=win_shift,
     begin_loss_ind=begin_loss_ind,
     outputFullTestMatrix=True,
     allTestSeq=True)
n_depths = torch.unique(all_data[:, :, 0]).size()[0]
u_depths = np.unique(tst_data[:, 0, 0])

trn_data = tst_data
batch_size = trn_data.size()[0]


#Dataset classes
class TemperatureTrainDataset(Dataset):
    #training dataset class, allows Dataloader to load both input/target
    def __init__(self, trn_data):