-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
example notebook for batch training execution (#245)
* Create example_batch_training.ipynb * Update example_batch_training.ipynb * Update example_batch_training.ipynb * Update example_batch_training.ipynb * Update notebooks/examples/example_batch_training.ipynb Co-authored-by: Hannah Eslinger <[email protected]> * Update notebooks/examples/example_batch_training.ipynb Co-authored-by: Hannah Eslinger <[email protected]> * Update notebooks/examples/example_batch_training.ipynb Co-authored-by: Hannah Eslinger <[email protected]> * Update example_batch_training.ipynb * Update example_batch_training.ipynb Co-authored-by: Hannah Eslinger <[email protected]>
- Loading branch information
1 parent
227fc34
commit 2bf6cbe
Showing
1 changed file
with
154 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,154 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"import json\n", | ||
"import logging\n", | ||
"import os\n", | ||
"from pathlib import Path\n", | ||
"\n", | ||
"from wattile.buildings_processing import prep_for_rnn\n", | ||
"from wattile.data_reading import read_dataset_from_file\n", | ||
"from wattile.entry_point import init_logging\n", | ||
"from wattile.models import ModelFactory\n", | ||
"\n", | ||
"PROJECT_DIRECTORY = Path().resolve().parents[1]\n", | ||
"logger = logging.getLogger(str(os.getpid()))" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"\"\"\"\n", | ||
"define parametric space\n", | ||
"\"\"\"\n", | ||
"parametric_space = [\n", | ||
" {\n", | ||
" \"building\": \"Synthetic Site\",\n", | ||
" \"targets\": [\n", | ||
" \"Synthetic Site Electricity Main Total Power\"\n", | ||
" # add more targets if necessary\n", | ||
" ],\n", | ||
" \"dir_data\": \"tests/data/Synthetic Site\",\n", | ||
" }\n", | ||
" # add more entries if necessary\n", | ||
"]" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# read configs file for training\n", | ||
"with open(\n", | ||
" PROJECT_DIRECTORY / \"wattile\" / \"configs\" / \"configs.json\", \"r\"\n", | ||
") as f:\n", | ||
" configs = json.load(f)" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"\"\"\"\n", | ||
"run model training and validation for the entire parametric space\n", | ||
"\"\"\"\n", | ||
"for entry in parametric_space:\n", | ||
"\n", | ||
" # set building name\n", | ||
" building = entry[\"building\"]\n", | ||
"\n", | ||
" # set data directory\n", | ||
" data_dir = entry[\"dir_data\"]\n", | ||
"\n", | ||
" for target in entry[\"targets\"]:\n", | ||
"\n", | ||
" \"\"\"\n", | ||
" model training\n", | ||
" \"\"\"\n", | ||
" logger.info(\n", | ||
" \"training for building = {} and target = {}\".format(building, target)\n", | ||
" )\n", | ||
"\n", | ||
" # override configs params based on the parametric space information\n", | ||
" configs[\"data_input\"][\"data_dir\"] = str(PROJECT_DIRECTORY / data_dir)\n", | ||
" configs[\"data_input\"][\"data_config\"] = \"{} Config.json\".format(building)\n", | ||
" configs[\"data_input\"][\"target_var\"] = target\n", | ||
" exp_dir = PROJECT_DIRECTORY / building / target\n", | ||
" configs[\"data_output\"][\"exp_dir\"] = str(exp_dir)\n", | ||
"\n", | ||
" # create results folder\n", | ||
" init_logging(local_results_dir=configs[\"data_output\"][\"exp_dir\"])\n", | ||
"\n", | ||
" # read data\n", | ||
" data = read_dataset_from_file(configs)\n", | ||
"\n", | ||
" # prepare data for training\n", | ||
" train_df, val_df = prep_for_rnn(configs, data)\n", | ||
" \n", | ||
" # create model\n", | ||
" model = ModelFactory.create_model(configs)\n", | ||
" \n", | ||
" # train model\n", | ||
" results = model.train(train_df, val_df)\n", | ||
"\n", | ||
" \"\"\"\n", | ||
" model validation (original data used)\n", | ||
" \"\"\"\n", | ||
" logger.info(\n", | ||
" \"validating for building = {} and target = {}\".format(building, target)\n", | ||
" )\n", | ||
"\n", | ||
" # reset config param for validation\n", | ||
" configs[\"data_output\"][\"plot_comparison_portion_start\"] = 0.0\n", | ||
" configs[\"data_output\"][\"plot_comparison_portion_end\"] = 1.0\n", | ||
" configs[\"learning_algorithm\"][\"use_case\"] = \"validation\"\n", | ||
"\n", | ||
" # prepare data for validation\n", | ||
" _, val_df = prep_for_rnn(configs, data)\n", | ||
"\n", | ||
" # validate model\n", | ||
" results = model.validate(val_df)\n" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": "Python 3", | ||
"language": "python", | ||
"name": "python3" | ||
}, | ||
"language_info": { | ||
"codemirror_mode": { | ||
"name": "ipython", | ||
"version": 3 | ||
}, | ||
"file_extension": ".py", | ||
"mimetype": "text/x-python", | ||
"name": "python", | ||
"nbconvert_exporter": "python", | ||
"pygments_lexer": "ipython3", | ||
"version": "3.8.3" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 4 | ||
} |