Configuration file
The configuration file is named config.yml
dynamic_data_file: path to the dynamic (time series data) file.static_data_file: [list] - path to the static (catchment attributes) data file (optional input).output_directory: [list] - path to the output folder (where files created by HydroEcoLSTM will be saved).input_static_features: [list] - input statics (catchment attributes) features, the list of input statics features are the column names (except theobject_idandtimecolumns) of the statics data file.input_dynamic_features: [list] - input dynamic (catchment attributes) features, the list of input dynamic features are the column names (execept theobject_idcolumn) of the dynamic data file.target_features: [list] - target features, the list of target features are the column names (execept theobject_idcolumn and the names that are alreay in input_dynamic_features`) of the dynamic data file.object_id: [list] - the catchment ID used to train the model, it can be any object_id listed in thedynamic_data_fileandstatic_data_filefiles.train_period: [list] - the starting and ending time of the trainning period, muss be inYYYY-MM-DD HH:MMformat.valid_period: [list] - the starting and ending time of the validation period, muss be inYYYY-MM-DD HH:MMformat.test_period: [list] - the starting and ending time of the test period, muss be inYYYY-MM-DD HH:MMformat.model_class: [``str] - name of the LSTM models, could beLSTMorEA-LSTMRegression: [list] - configuratoin of the model head, containing the following keys (which is also a list):activation_function: [list] - name of the activation function for each layer, could be a list of characterIdentity,ReLu,Sigmoid,Tanh,Softplus.num_neurons: [list] - number of neurons in each layers of the model head, useNonefor the last layer as the number of neurons in this layer is defined by the model, which is equals to the number of target featuresnum_layers: [int] - number of layers of the model head. Input can also be tune search space command, for exampletune.grid_search([1, 2]),tune.randint(1, 2),tune.choice([1, 2])scaler_input_dynamic_features: [list] - name of the transformation technique for the input dynamic features, for exampleZ-score,MinMaxScaler, orNonescaler_input_static_features: [list] - name of the transformation technique for the input static features, for exampleZ-score,MinMaxScaler, or ``None`scaler_target_features: [list] - name of the transformation technique for the target features, for exampleZ-score,MinMaxScaler, or ``None`hidden_size: [int] - hidden size of the LSTM. Input can also be tune search space command.num_layers: [int] - number of layers of the LSTM. Input can also be tune search space command.n_epochs: [int] - number of training epochs. Input can also be tune search space command.learning_rate: [float] - learning rate. Input can also be tune search space command.dropout: [float] - dropout rate, applied for the output of each LSTM layer (even there is only a single LSMT layer). Input can also be tune search space command.warmup_length: [int] - numer of warmup time steps, must be less than thesequence_length. For example, if thesequence_length = 100and thewarmup_length = 10, only the last 90 values of the target features are used when calculating loss. Input can also be tune search space command.loss_function: [str] - name of the loss function used for model training, could be the root mean squared errorRMSE, mean absolute errorMAE, mean squared error``MSE``, or the complement to 1 of the Nash-Sutcliffe, which is 1 - NSENSE_complement.sequence_length: [int] - sequence length. Input can also be tune search space command.batch_size: [int] - batch size. Input can also be tune search space command.patience: [int] - number of epoch to wait to see if there is no improvements in the tranning loss then stop the traning, more detail, please see the description from Bjarte Mehus Sunde. Input can also be tune search space command.eval_function: [int] - name of the function for calculate model performance,MSE,RMSE, Nash-SutCliffe efficiencyNSE,MAE(this is not used during model trainning), just in case you want to calculate some of the model performance statistics to shown in the report .static_data_file_forecast: [list] - path to the static (catchment attributes) data file that contain data of the ungauged catchments or of the forecast period, which I call forecast in general. If it is the same file asstatic_data_filethen typestatic_data_file. - static_data_filedynamic_data_file_forecast: [list] - path to the dynamic (time series) data file that contain data of the ungauged catchments or of the forecast period. If it is the same file asdynamic_data_filethen typedynamic_data_file.forecast_period: [list] - the starting and ending time of the forecast period, muss be inYYYY-MM-DD HH:MMformat.object_id_forecast: [list] - list of the object_id in thestatic_data_file_forecastthat you want to used
The configuration file will be read as a dict type object, so you can also create this configuration file in Python as a list object.