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
###########################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:
#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):