From 31ba8de6654c85f844d6ec22adcad36b4e22c065 Mon Sep 17 00:00:00 2001 From: Hunter Barndt Date: Wed, 19 Apr 2023 14:10:46 -0800 Subject: [PATCH 1/5] energy usage test demo --- energyusage_test.ipynb | 65 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 energyusage_test.ipynb diff --git a/energyusage_test.ipynb b/energyusage_test.ipynb new file mode 100644 index 0000000..938ff89 --- /dev/null +++ b/energyusage_test.ipynb @@ -0,0 +1,65 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Import Library\n", + "import energyusage" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It will return the value of your function, while also printing out the energy usage report on the command line. Optional keyword arguments:\n", + "\n", + "* pdf(default = False): generates a PDF report, alongside the command-line utility\n", + "\n", + "* powerLoss (default = 0.8): accounts for PSU loss, can be set by user if known for higher accuracy of results\n", + "\n", + "* energyOutput (default = False): prints amount of energy used by the process and time taken. The order is time, energy used, return of function\n", + "\n", + "* printToScreen (default = True): controls whether there is a terminal printout of the package running\n", + "\n", + "* energyOutput (default = False): determines whether the energy used and time taken are output. When set to true the order is time used, energy used, return value of function.\n", + "\n", + "* locations (default = [\"Mongolia\", \"Iceland\", \"Switzerland\"]): allows selecting the countries in the emissions comparison section for the terminal printout and pdf. These can be set to the name of any country or US state.\n", + "\n", + "* year (default = 2016): controls the year for the data. Default is 2016 as that is currently the most recent year of data from both of our sources. Note that only this year of data is included in the package installation but more can be added in a process described later." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Test Function\n", + "def recursive_fib(n):\n", + " if (n <= 2): return 1\n", + " else: return recursive_fib(n-1) + recursive_fib(n-2)\n", + "\n", + "# Inputs: Function, Arguements it Requires\n", + "energyusage.evaluate(recursive_fib, 40, pdf=True)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "forestfiredetection_gpu", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.9.16" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From ae143cb72ec38e578e672bc8c024c9f26fa5362c Mon Sep 17 00:00:00 2001 From: Hunter Barndt Date: Wed, 19 Apr 2023 15:12:30 -0800 Subject: [PATCH 2/5] energy usage not supported --- energyusage_test.ipynb | 65 ------------------------ pyJoules_demo.ipynb | 109 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 109 insertions(+), 65 deletions(-) delete mode 100644 energyusage_test.ipynb create mode 100644 pyJoules_demo.ipynb diff --git a/energyusage_test.ipynb b/energyusage_test.ipynb deleted file mode 100644 index 938ff89..0000000 --- a/energyusage_test.ipynb +++ /dev/null @@ -1,65 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Import Library\n", - "import energyusage" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "It will return the value of your function, while also printing out the energy usage report on the command line. Optional keyword arguments:\n", - "\n", - "* pdf(default = False): generates a PDF report, alongside the command-line utility\n", - "\n", - "* powerLoss (default = 0.8): accounts for PSU loss, can be set by user if known for higher accuracy of results\n", - "\n", - "* energyOutput (default = False): prints amount of energy used by the process and time taken. The order is time, energy used, return of function\n", - "\n", - "* printToScreen (default = True): controls whether there is a terminal printout of the package running\n", - "\n", - "* energyOutput (default = False): determines whether the energy used and time taken are output. When set to true the order is time used, energy used, return value of function.\n", - "\n", - "* locations (default = [\"Mongolia\", \"Iceland\", \"Switzerland\"]): allows selecting the countries in the emissions comparison section for the terminal printout and pdf. These can be set to the name of any country or US state.\n", - "\n", - "* year (default = 2016): controls the year for the data. Default is 2016 as that is currently the most recent year of data from both of our sources. Note that only this year of data is included in the package installation but more can be added in a process described later." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Test Function\n", - "def recursive_fib(n):\n", - " if (n <= 2): return 1\n", - " else: return recursive_fib(n-1) + recursive_fib(n-2)\n", - "\n", - "# Inputs: Function, Arguements it Requires\n", - "energyusage.evaluate(recursive_fib, 40, pdf=True)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "forestfiredetection_gpu", - "language": "python", - "name": "python3" - }, - "language_info": { - "name": "python", - "version": "3.9.16" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/pyJoules_demo.ipynb b/pyJoules_demo.ipynb new file mode 100644 index 0000000..e76d62e --- /dev/null +++ b/pyJoules_demo.ipynb @@ -0,0 +1,109 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Import Library\n", + "import pyJoules" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Only works on:\n", + "* GNU/Linux\n", + "\n", + "It monitors the energy consumed by specific device of the host machine such as :\n", + "\n", + "* intel CPU socket package\n", + "* RAM (for intel server architectures)\n", + "* intel integrated GPU (for client architectures)\n", + "* nvidia GPU\n", + "\n", + "Requires:\n", + "* python >= 3.7\n", + "* nvml (if you want nvidia GPU support)\n", + "\n", + "Install:\n", + "* pip install pyJoules\n", + "* pip install pyJoules[nvidia] (Measures Nvidia GPU)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "reduce() of empty sequence with no initial value", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[5], line 10\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[39melse\u001b[39;00m: \u001b[39mreturn\u001b[39;00m recursive_fib(n\u001b[39m-\u001b[39m\u001b[39m1\u001b[39m) \u001b[39m+\u001b[39m recursive_fib(n\u001b[39m-\u001b[39m\u001b[39m2\u001b[39m)\n\u001b[0;32m 9\u001b[0m num \u001b[39m=\u001b[39m \u001b[39m40\u001b[39m\n\u001b[1;32m---> 10\u001b[0m recursive_fib(num)\n", + "File \u001b[1;32mc:\\Users\\Hunter\\miniconda3\\envs\\forestfiredetection_gpu\\lib\\site-packages\\pyJoules\\energy_meter.py:296\u001b[0m, in \u001b[0;36mmeasure_energy..decorator_measure_energy..wrapper_measure\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 293\u001b[0m \u001b[39m@functools\u001b[39m\u001b[39m.\u001b[39mwraps(func)\n\u001b[0;32m 294\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mwrapper_measure\u001b[39m(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs):\n\u001b[0;32m 295\u001b[0m energy_meter\u001b[39m.\u001b[39mstart(tag\u001b[39m=\u001b[39mfunc\u001b[39m.\u001b[39m\u001b[39m__name__\u001b[39m)\n\u001b[1;32m--> 296\u001b[0m val \u001b[39m=\u001b[39m func(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[0;32m 297\u001b[0m energy_meter\u001b[39m.\u001b[39mstop()\n\u001b[0;32m 298\u001b[0m handler\u001b[39m.\u001b[39mprocess(energy_meter\u001b[39m.\u001b[39mget_trace())\n", + "Cell \u001b[1;32mIn[5], line 7\u001b[0m, in \u001b[0;36mrecursive_fib\u001b[1;34m(n)\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[39m@measure_energy\u001b[39m\n\u001b[0;32m 4\u001b[0m \u001b[39m# Test Function\u001b[39;00m\n\u001b[0;32m 5\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mrecursive_fib\u001b[39m(n):\n\u001b[0;32m 6\u001b[0m \u001b[39mif\u001b[39;00m (n \u001b[39m<\u001b[39m\u001b[39m=\u001b[39m \u001b[39m2\u001b[39m): \u001b[39mreturn\u001b[39;00m \u001b[39m1\u001b[39m\n\u001b[1;32m----> 7\u001b[0m \u001b[39melse\u001b[39;00m: \u001b[39mreturn\u001b[39;00m recursive_fib(n\u001b[39m-\u001b[39;49m\u001b[39m1\u001b[39;49m) \u001b[39m+\u001b[39m recursive_fib(n\u001b[39m-\u001b[39m\u001b[39m2\u001b[39m)\n", + "File \u001b[1;32mc:\\Users\\Hunter\\miniconda3\\envs\\forestfiredetection_gpu\\lib\\site-packages\\pyJoules\\energy_meter.py:296\u001b[0m, in \u001b[0;36mmeasure_energy..decorator_measure_energy..wrapper_measure\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 293\u001b[0m \u001b[39m@functools\u001b[39m\u001b[39m.\u001b[39mwraps(func)\n\u001b[0;32m 294\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mwrapper_measure\u001b[39m(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs):\n\u001b[0;32m 295\u001b[0m energy_meter\u001b[39m.\u001b[39mstart(tag\u001b[39m=\u001b[39mfunc\u001b[39m.\u001b[39m\u001b[39m__name__\u001b[39m)\n\u001b[1;32m--> 296\u001b[0m val \u001b[39m=\u001b[39m func(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[0;32m 297\u001b[0m energy_meter\u001b[39m.\u001b[39mstop()\n\u001b[0;32m 298\u001b[0m handler\u001b[39m.\u001b[39mprocess(energy_meter\u001b[39m.\u001b[39mget_trace())\n", + "Cell \u001b[1;32mIn[5], line 7\u001b[0m, in \u001b[0;36mrecursive_fib\u001b[1;34m(n)\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[39m@measure_energy\u001b[39m\n\u001b[0;32m 4\u001b[0m \u001b[39m# Test Function\u001b[39;00m\n\u001b[0;32m 5\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mrecursive_fib\u001b[39m(n):\n\u001b[0;32m 6\u001b[0m \u001b[39mif\u001b[39;00m (n \u001b[39m<\u001b[39m\u001b[39m=\u001b[39m \u001b[39m2\u001b[39m): \u001b[39mreturn\u001b[39;00m \u001b[39m1\u001b[39m\n\u001b[1;32m----> 7\u001b[0m \u001b[39melse\u001b[39;00m: \u001b[39mreturn\u001b[39;00m recursive_fib(n\u001b[39m-\u001b[39;49m\u001b[39m1\u001b[39;49m) \u001b[39m+\u001b[39m recursive_fib(n\u001b[39m-\u001b[39m\u001b[39m2\u001b[39m)\n", + " \u001b[1;31m[... skipping similar frames: recursive_fib at line 7 (35 times), measure_energy..decorator_measure_energy..wrapper_measure at line 296 (35 times)]\u001b[0m\n", + "File \u001b[1;32mc:\\Users\\Hunter\\miniconda3\\envs\\forestfiredetection_gpu\\lib\\site-packages\\pyJoules\\energy_meter.py:296\u001b[0m, in \u001b[0;36mmeasure_energy..decorator_measure_energy..wrapper_measure\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 293\u001b[0m \u001b[39m@functools\u001b[39m\u001b[39m.\u001b[39mwraps(func)\n\u001b[0;32m 294\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mwrapper_measure\u001b[39m(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs):\n\u001b[0;32m 295\u001b[0m energy_meter\u001b[39m.\u001b[39mstart(tag\u001b[39m=\u001b[39mfunc\u001b[39m.\u001b[39m\u001b[39m__name__\u001b[39m)\n\u001b[1;32m--> 296\u001b[0m val \u001b[39m=\u001b[39m func(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[0;32m 297\u001b[0m energy_meter\u001b[39m.\u001b[39mstop()\n\u001b[0;32m 298\u001b[0m handler\u001b[39m.\u001b[39mprocess(energy_meter\u001b[39m.\u001b[39mget_trace())\n", + "Cell \u001b[1;32mIn[5], line 7\u001b[0m, in \u001b[0;36mrecursive_fib\u001b[1;34m(n)\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[39m@measure_energy\u001b[39m\n\u001b[0;32m 4\u001b[0m \u001b[39m# Test Function\u001b[39;00m\n\u001b[0;32m 5\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mrecursive_fib\u001b[39m(n):\n\u001b[0;32m 6\u001b[0m \u001b[39mif\u001b[39;00m (n \u001b[39m<\u001b[39m\u001b[39m=\u001b[39m \u001b[39m2\u001b[39m): \u001b[39mreturn\u001b[39;00m \u001b[39m1\u001b[39m\n\u001b[1;32m----> 7\u001b[0m \u001b[39melse\u001b[39;00m: \u001b[39mreturn\u001b[39;00m recursive_fib(n\u001b[39m-\u001b[39;49m\u001b[39m1\u001b[39;49m) \u001b[39m+\u001b[39m recursive_fib(n\u001b[39m-\u001b[39m\u001b[39m2\u001b[39m)\n", + "File \u001b[1;32mc:\\Users\\Hunter\\miniconda3\\envs\\forestfiredetection_gpu\\lib\\site-packages\\pyJoules\\energy_meter.py:298\u001b[0m, in \u001b[0;36mmeasure_energy..decorator_measure_energy..wrapper_measure\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 296\u001b[0m val \u001b[39m=\u001b[39m func(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n\u001b[0;32m 297\u001b[0m energy_meter\u001b[39m.\u001b[39mstop()\n\u001b[1;32m--> 298\u001b[0m handler\u001b[39m.\u001b[39mprocess(energy_meter\u001b[39m.\u001b[39;49mget_trace())\n\u001b[0;32m 299\u001b[0m \u001b[39mreturn\u001b[39;00m val\n", + "File \u001b[1;32mc:\\Users\\Hunter\\miniconda3\\envs\\forestfiredetection_gpu\\lib\\site-packages\\pyJoules\\energy_meter.py:160\u001b[0m, in \u001b[0;36mEnergyMeter.get_trace\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 157\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_is_meter_stoped():\n\u001b[0;32m 158\u001b[0m \u001b[39mraise\u001b[39;00m EnergyMeterNotStoppedError()\n\u001b[1;32m--> 160\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_generate_trace()\n", + "File \u001b[1;32mc:\\Users\\Hunter\\miniconda3\\envs\\forestfiredetection_gpu\\lib\\site-packages\\pyJoules\\energy_meter.py:169\u001b[0m, in \u001b[0;36mEnergyMeter._generate_trace\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 168\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_generate_trace\u001b[39m(\u001b[39mself\u001b[39m):\n\u001b[1;32m--> 169\u001b[0m domains \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_get_domain_list()\n\u001b[0;32m 170\u001b[0m generator \u001b[39m=\u001b[39m TraceGenerator(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_first_state, domains)\n\u001b[0;32m 171\u001b[0m \u001b[39mreturn\u001b[39;00m generator\u001b[39m.\u001b[39mgenerate()\n", + "File \u001b[1;32mc:\\Users\\Hunter\\miniconda3\\envs\\forestfiredetection_gpu\\lib\\site-packages\\pyJoules\\energy_meter.py:166\u001b[0m, in \u001b[0;36mEnergyMeter._get_domain_list\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 162\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_get_domain_list\u001b[39m(\u001b[39mself\u001b[39m):\n\u001b[0;32m 163\u001b[0m \u001b[39m \u001b[39m\u001b[39m\"\"\"\u001b[39;00m\n\u001b[0;32m 164\u001b[0m \u001b[39m return the list of all monitored domains for each monitored energy devices\u001b[39;00m\n\u001b[0;32m 165\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 166\u001b[0m \u001b[39mreturn\u001b[39;00m reduce(operator\u001b[39m.\u001b[39;49madd, [device\u001b[39m.\u001b[39;49mget_configured_domains() \u001b[39mfor\u001b[39;49;00m device \u001b[39min\u001b[39;49;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mdevices])\n", + "File \u001b[1;32mc:\\Users\\Hunter\\miniconda3\\envs\\forestfiredetection_gpu\\Lib\\functools.py:255\u001b[0m, in \u001b[0;36mreduce\u001b[1;34m(function, sequence, initial)\u001b[0m\n\u001b[0;32m 253\u001b[0m value \u001b[39m=\u001b[39m \u001b[39mnext\u001b[39m(it)\n\u001b[0;32m 254\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mStopIteration\u001b[39;00m:\n\u001b[1;32m--> 255\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mTypeError\u001b[39;00m(\u001b[39m\"\u001b[39m\u001b[39mreduce() of empty sequence with no initial value\u001b[39m\u001b[39m\"\u001b[39m) \u001b[39mfrom\u001b[39;00m \u001b[39mNone\u001b[39;00m\n\u001b[0;32m 256\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m 257\u001b[0m value \u001b[39m=\u001b[39m initial\n", + "\u001b[1;31mTypeError\u001b[0m: reduce() of empty sequence with no initial value" + ] + } + ], + "source": [ + "from pyJoules.energy_meter import measure_energy\n", + "\n", + "@measure_energy\n", + "# Test Function\n", + "def recursive_fib(n):\n", + " if (n <= 2): return 1\n", + " else: return recursive_fib(n-1) + recursive_fib(n-2)\n", + "\n", + "num = 40\n", + "recursive_fib(num)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "forestfiredetection_gpu", + "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.9.16" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From e3ee507da270ebd7761d341842a97dc2f8399bc1 Mon Sep 17 00:00:00 2001 From: Hunter Barndt Date: Mon, 1 May 2023 22:32:37 -0800 Subject: [PATCH 3/5] Cleaned autoencoder for consistency/readability --- ae_create_train.py | 80 ++++++++----------------------------------- ae_import_evaluate.py | 7 ++-- unet_create_train.py | 9 ++--- 3 files changed, 23 insertions(+), 73 deletions(-) diff --git a/ae_create_train.py b/ae_create_train.py index ff69b3e..b7f45da 100644 --- a/ae_create_train.py +++ b/ae_create_train.py @@ -10,23 +10,17 @@ from tensorflow.keras.layers import Dense, Conv2D, Dropout, Flatten, MaxPooling2D, UpSampling2D, Activation from tensorflow.keras.preprocessing.image import ImageDataGenerator import sys -#import ae_import_evaluate as aeie -# Tensorflow configuration settings -#tf.config.experimental_run_functions_eagerly(True) -#gpu_devices = tf.config.experimental.list_physical_devices('GPU') -#tf.config.experimental.set_memory_growth(gpu_devices[0], True) - -def import_classification_datasets(image_size, batch_size): +def import_classification_dataset(image_size, batch_size): # Create an ImageDataGenerator to load the images image_datagen = ImageDataGenerator(rescale=1/255, validation_split=0.2) test_image_datagen = ImageDataGenerator(rescale=1/255) - no_fire_train_dir = 'D:/UAF/CS Capstone/Datasets/No_Fire_Images/Training/' - no_fire_test_dir = 'D:/UAF/CS Capstone/Datasets/No_Fire_Images/Training/' - fire_train_dir = 'D:/UAF/CS Capstone/Datasets/Fire_Images/Training/' - fire_test_dir = 'D:/UAF/CS Capstone/Datasets/Fire_Images/Test/' + no_fire_train_dir = './No_Fire_Images/Training/' + no_fire_test_dir = './No_Fire_Images/Test/' + fire_train_dir = './Fire_Images/Training/' + fire_test_dir = './Fire_Images/Test/' ### No Fire Datasets ### no_fire_train_ds = image_datagen.flow_from_directory( @@ -78,54 +72,6 @@ def import_classification_datasets(image_size, batch_size): return no_fire_train_ds, no_fire_validation_ds, no_fire_test_ds, fire_train_ds, fire_validation_ds, fire_test_ds -def import_segmentation_dataset(image_size, batch_size): - - # Create an ImageDataGenerator to load the images - image_datagen = ImageDataGenerator(rescale=1/255, validation_split=0.2) - mask_datagen = ImageDataGenerator(rescale=1/255, validation_split=0.2) - - image_dir = 'D:/UAF/CS Capstone/Datasets/Segmentation/Images' - mask_dir = 'D:/UAF/CS Capstone/Datasets/Segmentation/Masks' - - ### Image Datasets ### - image_train_ds = image_datagen.flow_from_directory( - image_dir, - target_size=image_size, - batch_size=batch_size, - class_mode=None, - shuffle=True, - subset='training') - - image_val_ds = image_datagen.flow_from_directory( - image_dir, - target_size=image_size, - batch_size=batch_size, - class_mode=None, - shuffle=True, - subset='validation') - - ### Masks Datasets ### - mask_train_ds = mask_datagen.flow_from_directory( - mask_dir, - target_size=image_size, - batch_size=batch_size, - class_mode=None, - shuffle=True, - subset='training') - - mask_val_ds = mask_datagen.flow_from_directory( - mask_dir, - target_size=image_size, - batch_size=batch_size, - class_mode=None, - shuffle=True, - subset='validation') - - train_ds = zip(image_train_ds, mask_train_ds) - val_ds = zip(image_val_ds, mask_val_ds) - - return train_ds, val_ds - def create_ae_model(input_shape): @@ -158,12 +104,13 @@ def create_ae_model(input_shape): return autoencoder + # Structural Similarity Index Measure loss function def ssim_loss(y_true, y_pred): return 1 - image.ssim(y_true, y_pred, max_val=1.0) -def train(model, train_ds, validation_ds, epochs): +def ae_train(model, train_ds, validation_ds, epochs): model.fit(train_ds, validation_data=validation_ds, epochs=epochs) return model @@ -171,10 +118,11 @@ def train(model, train_ds, validation_ds, epochs): def main(): # Train Setup - image_size = (254, 254) #image_size = (3480, 2160) # Change padding on the last layer in the decoder to 'same' when doing 4K images - batch_size = 32 #batch_size = 4 - no_fire_train_ds, no_fire_validation_ds, no_fire_test_ds, fire_train_ds, fire_validation_ds, fire_test_ds = import_classification_datasets(image_size, batch_size) - #train_ds, val_ds = import_segmentation_dataset(image_size, batch_size) + image_size = (254, 254) + batch_size = 32 + no_fire_train_ds, no_fire_validation_ds, no_fire_test_ds, fire_train_ds, fire_validation_ds, fire_test_ds = import_classification_dataset(image_size, batch_size) + + # Check for available GPUs print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU'))) print(tf.config.list_physical_devices('GPU')) @@ -192,12 +140,12 @@ def main(): optimizer = 'adam' loss_function_name = 'ssim' loss_function = ssim_loss + epochs = 10 metrics = ['accuracy'] - epochs = 5 # Train model.compile(optimizer=optimizer, loss=loss_function, metrics=metrics) - model = train(model, no_fire_train_ds, no_fire_validation_ds, epochs) + model = ae_train(model, no_fire_train_ds, no_fire_validation_ds, epochs) # Save model.save(f'C:/Users/Hunter/Desktop/Spring 2023/CS Capstone/GitHub/ForestFireDetection/Models/weights/forest_fire_ae_{image_size[0]}x{image_size[1]}_{optimizer}_{loss_function_name}_{epochs}.h5') diff --git a/ae_import_evaluate.py b/ae_import_evaluate.py index 3e5a21f..bd1e3d0 100644 --- a/ae_import_evaluate.py +++ b/ae_import_evaluate.py @@ -7,16 +7,17 @@ import tensorflow as tf import cv2 import numpy as np -import ae_create_train as aect import glob as gb import os +import ae_create_train as aect def import_ae_model(model, path): model.load_weights(path) return model -def evaluate(model, dataset): + +def ae_evaluate(model, dataset): model.evaluate(x=dataset) @@ -24,7 +25,7 @@ def main(): # Setup image_size = (254, 254) batch_size = 32 - no_fire_train_ds, no_fire_validation_ds, no_fire_test_ds, fire_train_ds, fire_validation_ds, fire_test_ds = aect.import_classification_datasets(image_size, batch_size) + no_fire_train_ds, no_fire_validation_ds, no_fire_test_ds, fire_train_ds, fire_validation_ds, fire_test_ds = aect.import_classification_dataset(image_size, batch_size) image_shape = image_size + (3, ) model = aect.create_ae_model(image_shape) model.build((None, ) + image_shape) diff --git a/unet_create_train.py b/unet_create_train.py index 6095f43..59d2113 100644 --- a/unet_create_train.py +++ b/unet_create_train.py @@ -170,12 +170,13 @@ def train(model, train_ds, validation_ds, epochs): def main(): # Train Setup - #image_size = (3480, 2160) # Delete cropped layer to make this dimensionally fit image_size = (254, 254) - #batch_size = 1 - batch_size = 16 + batch_size = 16 no_fire_train_ds, no_fire_validation_ds, no_fire_test_ds, fire_train_ds, fire_validation_ds, fire_test_ds = import_classification_datasets(image_size, batch_size) + #image_size = (3480, 2160), #batch_size = 1, for segmentation dataset # Delete cropped layer to make this dimensionally fit #train_ds, val_ds = import_segmentation_dataset(image_size, batch_size) + + # Check for available GPUs print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU'))) print(tf.config.list_physical_devices('GPU')) @@ -193,8 +194,8 @@ def main(): optimizer = 'adam' loss_function_name = 'ssim' loss_function = ssim_loss - metrics = ['accuracy'] epochs = 5 + metrics = ['accuracy'] # Train model.compile(optimizer=optimizer, loss=loss_function, metrics=metrics) From 379c80124538b0205d8b3e2fa6333afeedde9f30 Mon Sep 17 00:00:00 2001 From: Hunter Barndt Date: Mon, 1 May 2023 22:33:47 -0800 Subject: [PATCH 4/5] model image --- .../architectures/forest_fire_ae_254x254.png | Bin 70774 -> 64944 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Models/architectures/forest_fire_ae_254x254.png b/Models/architectures/forest_fire_ae_254x254.png index 2a18847aad823846ed5727f10d68adfd10d513bd..8bd3ce69ba63c5bfc4b1079cbd2ce5cb0facd006 100644 GIT binary patch literal 64944 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

CTF`L+SwwD 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 YE6cu5j6N literal 70774 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 ?} zQN+Agkzk#DQ$KR|?%jYbYBbDrv4J;}{q@-A^6fK^Q4Vl&yhjWoY3-oGa0;^KNN5K# zPOf;nt-9Z=H)q*=GDN?oihj?Ybiron(IeqO&_`it?S&+|{S5j;l$k#n&Z=Sjf>jm{ z6;!3QeVp_35FC0tpZ%?gj+H_aw zD7u|8+TkS>&Wki$t!6Fi+>$RNu?R5nNmXL0HF-c8XJVOSlr`;exZcPWcN{%F%NeyS zITO0%=nO!eJQt(7_&1%M--R+-);BB?6u%*?9VdX@DcH28sM{KI4*m zoidvFRtXZrH?d3FV^Bi4jS);y9s4uT=nl5H*l|GY1;>U!?CJ4w$L-s0w&niiqfM#? z^Lq~0W8eC@#qeLi@+?Z{I^l3!y%4rYT zVf|#hGP&a~7mkEBz}81_h_%ew8e=xQ--3_k?d5k5vL8WI`r4jTI}tjAw<$h_Hbv^rqaIa}>%rQglEWMnXlF|drz)t#150CtF&CD?FIsOmEJ)U`)zlP*P zPcS5}QG60(=J&j1_s#libF$lYAMw*9CEv3}q+Rbi;tYk}Z(}>No-JKU%D;R}7lAo+ zMLnl`z-MxEv6%=~9$Q9D9WY%Dvnk$p ze7?WhRcLVIrpz?!h4i=Qwg-;)FCZ{RXkRz?O$HX4=4|4Y&nWQkWA&Zuo8c44nN9~> zqJLMJqh7DQn&iy1>53Duf9BFYZt*|OV_8U>c(>1cy<tn1wX@R2)DkP#`~%pZt5cAz$fkKw{DGZ1&0XjJIAC9 zq-zppOyDQWl~I+pSDR`bnY=O6&}fI1=8DIUx9*q6ues*&bhZN%Idz3fm&MX*n41zr zf4_`mPEB5={ie;Q$9`!y6{&ZMS4hZ$rm5KyrMaML{k#%5c0Lhwy4X)sjx5P0p|V%c z_$(S&9y#fIgrzdHitzRQVcP6GlkdE*!BWTV#@a;66EKm66<|^!kC9RYouz7atJYPykLt7U9yvjeJ2As?(wR1*|L!(?(OL;{=2K`cAtCu?$HM5J%OlI!Gs^5)Op{ zV3q#R?)~}2?!np6cljSr6FXFUETI^1&>+RPR=40g59aW67kK8-5Ki#EzGr$iBVWHB zBiIgd32RBH_Zxl7%ID%C;S$?#R2UamVa!kr+>(JNP26}f1--=dO{3S;&Vb^`_Iq>* zcbW*ZO=UXHYvN9umSwqM>k!LU`|f7CRLAi&C9qx%kJoY$IZXSDEvx6#Z1#Nq|(#;bDtNhmtq4?MF;v44K z$a)n!rmXg*TNr-5`$*q@`~4pL^80CUMYc=8?*|nxb|0+m+?#T&!>Sy6Rz}x0uBf0e z$JQB9CMvCh9S^!8zK&y%E$7VBO5CaTfn3yYm8tO8QKt~jg7=~W{N>PDKdw<;FIyL_ zV#j2zf5w z`h4#ca*6$Hd29AGKNWL02To01%@w^9fvm;y5|>#7Y_=)KF}fa<7Acv|&a1ahN&#_* zwo(`tzOB?K@F9lI5^Cx3vcjzn5Bk2Jm|gp)F4IuuJaQ&wqkNro{`y@x(vkN2xVQaL z*m1nE(z#J_`j%%~rSJ5uCDq8bDtrPaA_zMl8Fs!NJde7U3+54@3S74C!udmp%;`cVj*`4j8aE2EN zx7fy>Tx-DVzINnM5mDr`?B>(KO-)V2j=2!VDhtc$V4QnU!El8pxvUo3mDP!~E4DrcndS)(xAFz*_7s$aYT!9*qzHn5%IJ2n%vlj3nvvaR`>WK7S6$i0ML-dPt&thE*!wU%}wo|?i> z9hLgRqMe(l|DvDQBp*X>+lUqKbgh6fj(Gd3y4q1*>RO{Bmp5nF=R-TGn{<;!YMn^_Vj|WO; z2?Jp|+HL8CopXm@>=_m99RLLr2n=Z2-zE27!MX{@!d#uZ&t=sCOfI{vrXw}+m-jF17%J7|giTY7|v z-9E>A#LE(o;ydwwA`vKFMY137DkDl~e`|rHe9S7}@N}#qjTJAu5KucSQPIA0+T}h! z(IX2Yy9MVfN((a4*iF*L69OINUi7|6Uu@Z&e@?*#c<1O1n(Rpmk-1eb!9Gmf>h9s; zJchL<_s?mqWkvGt)U^YWbC7nI(R~-3Cz|!!v$wdIyEl!E4d+guTk%#f@y((3KAwMb z^Y8MD|5@$cL+vdFvxMT^9yKiUaNtXX$u2ZJ{9K;861`Xj@ia^R<>!lr;}26D9q&~V z4u`-W4zIfJ+_m^E32GTm4Wj#R04T>>`^#T}yfUy|KJc9JzQ+`d?DDS!GsLpo7+sF4 ze(Ul=>t#j(yUmDx5_CJ=^>mbkrEmYK9=}@K`azVL=S&xE-nQ+2PfyPsEwsN9hI||q z<^)iiK>{YPq8WjiRi~&o-j3C^4MvIMf$vcds|2mx3!ynm!cYALRsN@|c2iE41@oSc8?`QBH87YSJw zwR!i)7h>qN{(QD1$C}qdrIzK8BvsF8f&1LK{gm)<)iBd~iVD)NU(327gD*6mh}A*H z6O#{H!ly@%a|qcq+Nrk#!bGv0*wiN+BVL%t8LALri97fLhpm@f!-?S$9xlZ3tek~+ z-PbWTeoH=Sl&4;fT+##smFKM(hmSROJhcJ>0%n3*DH7Q;l~<%9>rr!3qgC>7n9yi#*k5!# zy#mBjOd@PEI&0Fvb-@|chdsAHb2J>Q?uu9~9Q8|odG@4u$|w%Av^JoK9%&1n_qjoY zyDwm&{&1J-O*a zsqNs97bVeNlkL}hdUWcVkhWF9D88GiX8j`y?Z0QRSMe(|*x6{QkEbub#+6L&8N>q8 z33m3UynX{U)zuB*ald3Dk}3B|RKjf`!DD44>4dgZlDR^u>8;1zUCHAtU52njQ{tZK zQ4O0whu3kKu;evqbP<-|O$)1)vX z2NVFUCjIkBmgS@03G?E4%8=bYj3TM{dujPb)X_gPcY$=9TH--cMt;&dC7 z-JRf1nai@bEqcX^J#FPyb*#SAF2>01EQ;tfx1Vwzxa(ElB^$qMYH}1lNH+60a){IH zJ87dyo4vDXdG=R%D!|tip0#F#`LM#tuT`MUC>RBEDL)o@m!5<$N>2sHA^W^r#0zWQ z&*Dcgi`7;!GCJJ%Uaa$LRv>He#3o3;=4cIZ%2jF?w!_p0-cj!Db1dtpvaJg`Z@09> zawehGj#;)jt2VRsHUI0bf-R54(W_-IQ~ZLqyLon{)hM4ZSwh8DhscKzoa;0 z&aj!&u|VO2-_`T$_iZO3JpT%c$?6@)=e>q&eZL0K-l`qP{~&4W=sbPeT*=a9Gx(nC zdp_FPY(CtPh6IJX#;-B$T(m485IX7L@bTnx|p-oyC$7Kk$t5u8?x+Zm& zU3pL~1iPLf@_VWL)XGFXJZ$?3TT6A5DjrqpU;Vj=#zodn^NY+q#+>({J?YunQtL*a z+=B?1J8VYXi-+FBqPNFe_ct6xP)p$Zh!ZPL)&17Fz=q+|N1TPw315CljAX9P#!9`h zyc@2NYukVgISWUOez@#BLtk|JH1grj^uFi$?Z-L-B}z(moqs)f?Aynfi-Amem{k$J z#6IeFoyBexMxrzc4;s2NgkeF}irVpMbZwMhzf1Hck%y^C3e-QjUFWN%WFh#MKe!85 z&kaE)mi_4?!^}iP2B)};lQ-(Qdb#+9% z!L9w?%^_lgx*{L;s4DY_Hz&5p)^v2JmvM$1suptSgu&@9M3Fu507Wm$PXCB^mdfHa z-SE*#V}c@ZQqhI<cgP?RDx za{|^{w216KIX}PUUaBxv6X%xD*hax5buF!&M_gtGG+f%fEcPVAKI$@)5!r*fSnh}^ zxu&E&c=by(RI*fImO@J{+P1vNl$7gKlndaMrUolULklfY&FC|&egP;9#+J? zIgepvVAp}-;${qU$aP_9c-hj3s0CsbdR9}#z1%J6lU%43>;YSf@P;a#?|8TT@6CAn z9LQY|;Gy1^&FJ=M46YEIR6sDfUu$8C-cTB;ht*v^sA$jI^hS$?E>r}?KKD6TT! ztY)HVhp(Jq_&d_e$`!hmlFSpx@r?BbjCq(}Zyqy_>`oOS5K@!Gw$L;I)zU+x^9@Ly zw6bz>3*yi~@u;dlJMf|T>}2N=L?N)kxUq)fSPW-4Z$R?*Ut_7+qdjD~G=(@^X}qjs zAar9W)1Z=naXIsmELl~$D0n4rYibgaK>xf-Xsf{anoCRbaDrKAxE>7}C$|)17(&|e zjyjD05RNvG6z>w(mz`(he!!|y{vlbqJrC4R`9=2>eRi zHrmP;GU~k>#9Fi8D6cNK@29O}YT%Rb4HPU%P-RXQI=iT<4A<2Np5fK+(`kRZhcWzGjzb43 z28nJa^N9Y+7tJ!r;|8!}(5sb~RNH`$)6SIR(_ijL?izR}cY3dXLOYA(N~(h{?6z87 zXYT~Bn|IV9YnstLbyZRc(oW;rA#;0D7#SV~_i@X_$ZaXpHyqRG3;@xlplrZ+r78I9 z`DZ4fbrPskRB`OyxbKJ~XO*<*iRp#_dOv(J>gq(_GYQawM1tc}*;0sR(D>c1y6Hc9 zuMU6cH!KKq@~$#eXw9_v%bLd+AGI>@dH&PDXB}B}Jufp;znZEc810A&@vr6xog7ZOG<6@+FOC47wpORF#kPPF$-B z?5<=!<{$1*@<$w_>OpDuGY#!y(p4$h$EQX)5UI6(@?<0*P6{$b>{Um$0rJ~52jcE7 z?Fz>YSMTR}W?c!p(>@Xm9+l!CLhddhTo12KMdw^xhg0FBeHI&B78l<}xN}o);Be18@P8)R9YHYXur}k(7qo8|+}J?# zP(L2WPp3>YN?zD?(Org#at3jL~HH*yaTjny-$=P zu=2$ZZ$AQ+?;omNOc?P)KCntOOTdUy3f1me%1kSw`2W#QuP z)vH-x%0iXZo>RPJ(YP;nSFp~}WsuqkrXeDia6V0X|4TMk4-tdN<;6iL6&JMqPEaat z{FP97w@fMf{QtoH^nW{b3nhh;^6=~boF0BFl(+_s7(X%ieQGZLNiO@2yENhKaGeEm z8e7k=`o^MtvN%5|P@oXwI%+e@uu0UYsY>ILJ@HKvz3nf*$FMbqAB6iYAueKgC4&o~ z9rbpiq5-$M;rI3f)giwkyYQ53CvbU~afN0Tu9U#MM!_jHqOBm>u$l0_5pA|m!_a06 z@1FEy-WzE9EH0G=_K%RmtQY4d5+!C}<1Z)5Z2uPP^eVPK#_ksnJMG$7Mmp>ZQ zj(8wo3q#JvV7LXHF>VB!;0r3yJUbrz*z;}iHE^R#5Cr~{sH-JV&{f|f7yAz4aQ!@r zQ0K6NSXT|_9#X(;pJ0gNiXH7LqScyzr%a6~u_mEYeZUY$R7;Rb;QNDUq~km+zsOIu zZcA9S=W0`^ZWz5ONQ;W|oP0=h3x3f(NL``Lwqu4&&b%iV*F`NWK!mYc=IG=tps-!RAH1@6$D*4fW(>iG759!fU%GyZO6qL zgk{KjYe|&%%T_ZIg27DD_Scsq9r!HuR5dk`{qqDH?9yhrgHt;Zzqr`x2N(8~+76#G zU7t!N7Eibj$Qq|*S$kUj&;L^LSiiA{P+iUXrxA-PuNp=*3|ZvM7@#1*)vYyNUP z6YEjq&;ec{tb~5zQIgz{u_B2jV}`!rYoe`PGMQ7DngqrL#<8=^GLn*W#VYws37YuO z-%L|9!Z}vKWvSY=D&vN;FdNAOJKS3>f^9st@<#$hnRif<-V6^XZr9ClXj*Ixtm2T# zSY~}=IHiA-^T+j|nqJ%ztyDOKgG2v|lo$3}%B%S=QeNkZlxIk|cK(*~7T9B9K{zJw zl1=L^fi3Fb@R0sXeB7-Q0&41hr*Mmj6fTyIK_a=0fd_77(R31HS-9k*0a0Y%)a#y& z8VXdJ`OG*JG9>4AjzK!)N;7%q&Zf~Uq&559Ome_oY{97DVX*$qnUBn!mChJ4qDUj- z;}j$uVh;H{<3kRPJP3jRG)Krp?WwMu z#Hq^ziz0}n3W7WW0{4;GLwI{tOZ?GJPc>`)o%J~P@4Z#>?%hUPjS6H^Fr${TSDL(B zwzOq##Pvx2+x#yfFF>q#JnQod1T>Z>H^+B55kj8be-ZMg)P4zhj19redB@`BOv{)Z zI$gu7m5FMi)zb9x`HFve0=?=Ezm>G>vf`JY$q%m%?{0&6pa&?_GSFN5<`&^!b*srJ zBzk{H1Wx6z@$EEjEY#W@d@HL5=9-6<4Hi_f=-WUxy5@EIor(W1YF?4M!RMqVGu|)k zl@<{fV)opttnMgi3*xta$=X6E^{P2>z}RNn04#v>YTQGWhDvL_E~%IE$#6y?^ZUkSw}VqEV%{$E$4|6 za$d#BUvl1FhcIu+@9m%eM}pqVl|7i-^|xh~%;Rfb{%dSQg}pE8!oSFQ zHtvY6>oU6ksh!ec_aNtb%W}5`Iw#Jy~$ScC^gtOFK?{s%Jj-I~z;AF_4jAYHDV1n8+Q16%3*<*r7)Pei;&% zvQCO=Gp!PtZjdLm_FLNt&5!8Y!cmJm^RZol?T}nqCO-Fp%4EW7^WQ{4zs1poX9`DX zBt~$9!uI9Wkr^pbjoKiI-Oqg%hHVv?;32k@0<@QC;)NjjR@yMln4*OWV8E*V}vDj90Kn{{1WdSEDnCqRY4Zm~>buJT>Z=WSC{Dluw`g zM1%d^E9y%Ir~WuO{{xs|S*k|Cd@s5bv931^o}!_tT4vpUXqxtKeBluN^0D~Vjan89 zO^HmZW|423Lz+jGj&9<$6#%VjfAN>T!5lNct6B5m!zmlQR zI^)EYQj>7Y*gWs7t`Xdsnp_eT#T#mbC#)AMnZGiCRz>6ge2A-tCD*Y^MMZ`E{hgvm zUBjYY@ZSXLt6Lmv!2QCjt}T`Mm)CDRP16enK|9a3ua1)la35$b>u*6V3^b+ZJPWU_5Fv*(iO;eCS%mS}i} z)t@8vwm?84EPz-dMp!PUHBpqLoV~lX2dIDS(m-X%8PhzsX= z=;X~#z458S5f#Tdl(l^F=IJ`YFX<^`>7@G0R|vew3w(>Fb>kdON)NbnVO&Gkn3o(G z=E4#~dfBw1H{E}$hc4h`ZwV@GPXyclt;IQoyJ=41RjLuvXIoNIQt~cbwH!|2Z%qDv z)(cs=N@g?7)MJUAo@+Z&e`Fz7MbNfkhN0NE_T!N4xz(1LKJln5{TEMR;WzS*pXEF+ zS84a!?VB1sh8cz6D@Ek^Gil?%317xp5W`Fm9K)=*r|M`>6=3-v$eokX<1@Qr?A{y_ znyNloen`bybDrO3zh9afB+U+C1>|FM=7aD1g$*Wf*GMJLG&lZeUljg2vT?<vFBll%as`qg&gr^*t273QZG@ zZCHkUChn0Kar%KiblU&$)Ril2&^_^42d2)L#wZv3LANR1H(BK@secg%gO)?JivQW3 z2tc1A{T>^j14-KEOjAGle&)I?@q=A}>2nR&GkQvLPHN&ox?7G(|G}g+}a%@UGCWbZYT2&&wDz@2znt3h3{=uZRkW6qI8|2 z$1~`hr@Xgxb4l>7pH^~TfgBDF4iYq_PXWrBFT7lrsJ_3%xA^U;ZKF&!EL53W!HU$e? zL|<7Ty&&1sH#MK?0dLf0u~+`=A$L>Bv_$_(qmD)AmtWJMgu#x$4T%~O*ni>#0AdYh z@t<>XatVnelNn<7yc8~8#qmS*Oa2(&t2r)~I343rcCH=v%sWgHSx&`GDmHV9Q_Tky z7OQc;0EGXde2BcwZ{@Sjuf8)d?0dfR6QKh_;UEWLCRCuWJoame{=(s-M3F_;c~2<^ zZ&hKfl-BG$IR?C7v=U%-Z!sKt=(U(;%fMkb;4BiGXJ_FtFr+Tf*b3fQ7Re!AJYx+$U6!C?6a7j^N?1|8uFq6!BSDo*vc09Vx zX4;lR3+K1IzF(fiZ9&O{=9Ze|3vQNv&+0jO`U%8f5~k2eik!CeThF;e+DBBvvS6lL znWpK2gL{+giqdi9N%_ih^jYN^($p&Dtb4kry%HXBWK4ffo&8~o#h~-si#zO&)E#oA z`C%_*uBo0LTvPW8!HI~3uOTlv%Pt>|ivHZA1E?qiYg3H~!P z^@LT0w>y&|rIhEBGk?l`?B82ao zF)X9bI9K4$y!r<@&UBY4yx*Z(dc`Rv3l@UjgT7UlJ}_^)*PwPovi@sWazpLT?;3GjEX$*pV&oE% z>J@`?4>&xbG2+a^!?3H~ztLpJMH*>SlWN{&jNA5PGS^2ZKA)2fdnqL_7REQ4s_K0U zn-0d#4M{(y

h~O%%8Xq6myMA56Y_m%SgTF=la|_yeXP0B+ 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 Date: Mon, 1 May 2023 22:36:34 -0800 Subject: [PATCH 5/5] cleared outputs --- pyJoules_demo.ipynb | 37 +++---------------------------------- 1 file changed, 3 insertions(+), 34 deletions(-) diff --git a/pyJoules_demo.ipynb b/pyJoules_demo.ipynb index e76d62e..00324b3 100644 --- a/pyJoules_demo.ipynb +++ b/pyJoules_demo.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -36,33 +36,9 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "reduce() of empty sequence with no initial value", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[5], line 10\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[39melse\u001b[39;00m: \u001b[39mreturn\u001b[39;00m recursive_fib(n\u001b[39m-\u001b[39m\u001b[39m1\u001b[39m) \u001b[39m+\u001b[39m recursive_fib(n\u001b[39m-\u001b[39m\u001b[39m2\u001b[39m)\n\u001b[0;32m 9\u001b[0m num \u001b[39m=\u001b[39m \u001b[39m40\u001b[39m\n\u001b[1;32m---> 10\u001b[0m recursive_fib(num)\n", - "File \u001b[1;32mc:\\Users\\Hunter\\miniconda3\\envs\\forestfiredetection_gpu\\lib\\site-packages\\pyJoules\\energy_meter.py:296\u001b[0m, in \u001b[0;36mmeasure_energy..decorator_measure_energy..wrapper_measure\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 293\u001b[0m \u001b[39m@functools\u001b[39m\u001b[39m.\u001b[39mwraps(func)\n\u001b[0;32m 294\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mwrapper_measure\u001b[39m(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs):\n\u001b[0;32m 295\u001b[0m energy_meter\u001b[39m.\u001b[39mstart(tag\u001b[39m=\u001b[39mfunc\u001b[39m.\u001b[39m\u001b[39m__name__\u001b[39m)\n\u001b[1;32m--> 296\u001b[0m val \u001b[39m=\u001b[39m func(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[0;32m 297\u001b[0m energy_meter\u001b[39m.\u001b[39mstop()\n\u001b[0;32m 298\u001b[0m handler\u001b[39m.\u001b[39mprocess(energy_meter\u001b[39m.\u001b[39mget_trace())\n", - "Cell \u001b[1;32mIn[5], line 7\u001b[0m, in \u001b[0;36mrecursive_fib\u001b[1;34m(n)\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[39m@measure_energy\u001b[39m\n\u001b[0;32m 4\u001b[0m \u001b[39m# Test Function\u001b[39;00m\n\u001b[0;32m 5\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mrecursive_fib\u001b[39m(n):\n\u001b[0;32m 6\u001b[0m \u001b[39mif\u001b[39;00m (n \u001b[39m<\u001b[39m\u001b[39m=\u001b[39m \u001b[39m2\u001b[39m): \u001b[39mreturn\u001b[39;00m \u001b[39m1\u001b[39m\n\u001b[1;32m----> 7\u001b[0m \u001b[39melse\u001b[39;00m: \u001b[39mreturn\u001b[39;00m recursive_fib(n\u001b[39m-\u001b[39;49m\u001b[39m1\u001b[39;49m) \u001b[39m+\u001b[39m recursive_fib(n\u001b[39m-\u001b[39m\u001b[39m2\u001b[39m)\n", - "File \u001b[1;32mc:\\Users\\Hunter\\miniconda3\\envs\\forestfiredetection_gpu\\lib\\site-packages\\pyJoules\\energy_meter.py:296\u001b[0m, in \u001b[0;36mmeasure_energy..decorator_measure_energy..wrapper_measure\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 293\u001b[0m \u001b[39m@functools\u001b[39m\u001b[39m.\u001b[39mwraps(func)\n\u001b[0;32m 294\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mwrapper_measure\u001b[39m(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs):\n\u001b[0;32m 295\u001b[0m energy_meter\u001b[39m.\u001b[39mstart(tag\u001b[39m=\u001b[39mfunc\u001b[39m.\u001b[39m\u001b[39m__name__\u001b[39m)\n\u001b[1;32m--> 296\u001b[0m val \u001b[39m=\u001b[39m func(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[0;32m 297\u001b[0m energy_meter\u001b[39m.\u001b[39mstop()\n\u001b[0;32m 298\u001b[0m handler\u001b[39m.\u001b[39mprocess(energy_meter\u001b[39m.\u001b[39mget_trace())\n", - "Cell \u001b[1;32mIn[5], line 7\u001b[0m, in \u001b[0;36mrecursive_fib\u001b[1;34m(n)\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[39m@measure_energy\u001b[39m\n\u001b[0;32m 4\u001b[0m \u001b[39m# Test Function\u001b[39;00m\n\u001b[0;32m 5\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mrecursive_fib\u001b[39m(n):\n\u001b[0;32m 6\u001b[0m \u001b[39mif\u001b[39;00m (n \u001b[39m<\u001b[39m\u001b[39m=\u001b[39m \u001b[39m2\u001b[39m): \u001b[39mreturn\u001b[39;00m \u001b[39m1\u001b[39m\n\u001b[1;32m----> 7\u001b[0m \u001b[39melse\u001b[39;00m: \u001b[39mreturn\u001b[39;00m recursive_fib(n\u001b[39m-\u001b[39;49m\u001b[39m1\u001b[39;49m) \u001b[39m+\u001b[39m recursive_fib(n\u001b[39m-\u001b[39m\u001b[39m2\u001b[39m)\n", - " \u001b[1;31m[... skipping similar frames: recursive_fib at line 7 (35 times), measure_energy..decorator_measure_energy..wrapper_measure at line 296 (35 times)]\u001b[0m\n", - "File \u001b[1;32mc:\\Users\\Hunter\\miniconda3\\envs\\forestfiredetection_gpu\\lib\\site-packages\\pyJoules\\energy_meter.py:296\u001b[0m, in \u001b[0;36mmeasure_energy..decorator_measure_energy..wrapper_measure\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 293\u001b[0m \u001b[39m@functools\u001b[39m\u001b[39m.\u001b[39mwraps(func)\n\u001b[0;32m 294\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mwrapper_measure\u001b[39m(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs):\n\u001b[0;32m 295\u001b[0m energy_meter\u001b[39m.\u001b[39mstart(tag\u001b[39m=\u001b[39mfunc\u001b[39m.\u001b[39m\u001b[39m__name__\u001b[39m)\n\u001b[1;32m--> 296\u001b[0m val \u001b[39m=\u001b[39m func(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[0;32m 297\u001b[0m energy_meter\u001b[39m.\u001b[39mstop()\n\u001b[0;32m 298\u001b[0m handler\u001b[39m.\u001b[39mprocess(energy_meter\u001b[39m.\u001b[39mget_trace())\n", - "Cell \u001b[1;32mIn[5], line 7\u001b[0m, in \u001b[0;36mrecursive_fib\u001b[1;34m(n)\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[39m@measure_energy\u001b[39m\n\u001b[0;32m 4\u001b[0m \u001b[39m# Test Function\u001b[39;00m\n\u001b[0;32m 5\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mrecursive_fib\u001b[39m(n):\n\u001b[0;32m 6\u001b[0m \u001b[39mif\u001b[39;00m (n \u001b[39m<\u001b[39m\u001b[39m=\u001b[39m \u001b[39m2\u001b[39m): \u001b[39mreturn\u001b[39;00m \u001b[39m1\u001b[39m\n\u001b[1;32m----> 7\u001b[0m \u001b[39melse\u001b[39;00m: \u001b[39mreturn\u001b[39;00m recursive_fib(n\u001b[39m-\u001b[39;49m\u001b[39m1\u001b[39;49m) \u001b[39m+\u001b[39m recursive_fib(n\u001b[39m-\u001b[39m\u001b[39m2\u001b[39m)\n", - "File \u001b[1;32mc:\\Users\\Hunter\\miniconda3\\envs\\forestfiredetection_gpu\\lib\\site-packages\\pyJoules\\energy_meter.py:298\u001b[0m, in \u001b[0;36mmeasure_energy..decorator_measure_energy..wrapper_measure\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 296\u001b[0m val \u001b[39m=\u001b[39m func(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n\u001b[0;32m 297\u001b[0m energy_meter\u001b[39m.\u001b[39mstop()\n\u001b[1;32m--> 298\u001b[0m handler\u001b[39m.\u001b[39mprocess(energy_meter\u001b[39m.\u001b[39;49mget_trace())\n\u001b[0;32m 299\u001b[0m \u001b[39mreturn\u001b[39;00m val\n", - "File \u001b[1;32mc:\\Users\\Hunter\\miniconda3\\envs\\forestfiredetection_gpu\\lib\\site-packages\\pyJoules\\energy_meter.py:160\u001b[0m, in \u001b[0;36mEnergyMeter.get_trace\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 157\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_is_meter_stoped():\n\u001b[0;32m 158\u001b[0m \u001b[39mraise\u001b[39;00m EnergyMeterNotStoppedError()\n\u001b[1;32m--> 160\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_generate_trace()\n", - "File \u001b[1;32mc:\\Users\\Hunter\\miniconda3\\envs\\forestfiredetection_gpu\\lib\\site-packages\\pyJoules\\energy_meter.py:169\u001b[0m, in \u001b[0;36mEnergyMeter._generate_trace\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 168\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_generate_trace\u001b[39m(\u001b[39mself\u001b[39m):\n\u001b[1;32m--> 169\u001b[0m domains \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_get_domain_list()\n\u001b[0;32m 170\u001b[0m generator \u001b[39m=\u001b[39m TraceGenerator(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_first_state, domains)\n\u001b[0;32m 171\u001b[0m \u001b[39mreturn\u001b[39;00m generator\u001b[39m.\u001b[39mgenerate()\n", - "File \u001b[1;32mc:\\Users\\Hunter\\miniconda3\\envs\\forestfiredetection_gpu\\lib\\site-packages\\pyJoules\\energy_meter.py:166\u001b[0m, in \u001b[0;36mEnergyMeter._get_domain_list\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 162\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_get_domain_list\u001b[39m(\u001b[39mself\u001b[39m):\n\u001b[0;32m 163\u001b[0m \u001b[39m \u001b[39m\u001b[39m\"\"\"\u001b[39;00m\n\u001b[0;32m 164\u001b[0m \u001b[39m return the list of all monitored domains for each monitored energy devices\u001b[39;00m\n\u001b[0;32m 165\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 166\u001b[0m \u001b[39mreturn\u001b[39;00m reduce(operator\u001b[39m.\u001b[39;49madd, [device\u001b[39m.\u001b[39;49mget_configured_domains() \u001b[39mfor\u001b[39;49;00m device \u001b[39min\u001b[39;49;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mdevices])\n", - "File \u001b[1;32mc:\\Users\\Hunter\\miniconda3\\envs\\forestfiredetection_gpu\\Lib\\functools.py:255\u001b[0m, in \u001b[0;36mreduce\u001b[1;34m(function, sequence, initial)\u001b[0m\n\u001b[0;32m 253\u001b[0m value \u001b[39m=\u001b[39m \u001b[39mnext\u001b[39m(it)\n\u001b[0;32m 254\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mStopIteration\u001b[39;00m:\n\u001b[1;32m--> 255\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mTypeError\u001b[39;00m(\u001b[39m\"\u001b[39m\u001b[39mreduce() of empty sequence with no initial value\u001b[39m\u001b[39m\"\u001b[39m) \u001b[39mfrom\u001b[39;00m \u001b[39mNone\u001b[39;00m\n\u001b[0;32m 256\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m 257\u001b[0m value \u001b[39m=\u001b[39m initial\n", - "\u001b[1;31mTypeError\u001b[0m: reduce() of empty sequence with no initial value" - ] - } - ], + "outputs": [], "source": [ "from pyJoules.energy_meter import measure_energy\n", "\n", @@ -75,13 +51,6 @@ "num = 40\n", "recursive_fib(num)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": {