From 490785780aec8062fd17d9ad603ffb2d8e3539f1 Mon Sep 17 00:00:00 2001 From: Philipp Horstenkamp Date: Wed, 13 Jul 2022 19:10:24 +0200 Subject: [PATCH] Added a first draft of the introduction. --- ...ng-to-diverse-wind-direction-and-speed.png | Bin 0 -> 96628 bytes experiments/Experiments.ipynb | 410 ++++++++++-------- 2 files changed, 224 insertions(+), 186 deletions(-) create mode 100644 Polar-diagram-of-yacht-speed-according-to-diverse-wind-direction-and-speed.png diff --git a/Polar-diagram-of-yacht-speed-according-to-diverse-wind-direction-and-speed.png b/Polar-diagram-of-yacht-speed-according-to-diverse-wind-direction-and-speed.png new file mode 100644 index 0000000000000000000000000000000000000000..47471ffefb2c92d8edfa414b545cddead4f5993f GIT binary patch literal 96628 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

JG3g#+jO+OtNB6 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 z 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\n", + "\n", + "Da der roBOOTer anders als an Katamaran nicht auf Geschwindichkeit sondern auf Mechanische Belastbarkeit ausgelegt wurde hat der Fahrtwind einen geringeren einfluss auf das Fahrtverhalten des Segelboots dies und eine andere Maximalgeschwindigkeit sorgen für ein etwas anderes Fahrverhalten. Die ungefähre Form der Kurven trifft aber auch auf den roBOOTer zu. Man kann deutlich erkennen das auch wenn man nicht direkt gegen den Wind fahren kann man schräg gegen den wind immer noch erstaunlich schnell ist.\n", + "\n", + "Das aktuelle Verfahren zum finden einer Route läuf folgendermaßen ab:\n", + "\n", + "Eine direkte Route wird berechnet. Die Route wird an jedem Hinderniss geteilt und rechts und links um jedes hindernis herum gelegt. Bei folgenden hindernissen werden die Routen wieder geteilt somit erhält man $2^n$ vorschläge für Routen wobei $n$ die Anzahl der Hindernisse auf der Route ist. Jeder Abschnitt der Route wird noch einmal zerteilt um der Route mehr Flexibilität zu geben.\n", + "\n", + "Die Routen werden dann simmuliert um die Kosten der Route zu berechnen. Die so simulierte Route wird danach über die Kosten in einem Gradientenabstiegverfahren Optimiert.\n", + "\n", + "Das ganze oben beschriebene Verfahren ist relativ schnell sehr rechenaufwendig und findet nicht immer ein Ergbniss. Wird kein Ergebnis gefunden wird eine mehr oder weniger zufällige Route optimiert.\n", + "\n", + "Diese Ausarbeitung soll wenigstens bei der alternativen Routenfindung helfen. Im idealfall kann es aber auch genutzt wereden um die auswahl der Routen um Hindernisse frühzeitig zu reduzieren und den Rechenaufwand unter $2^n$ zu senken wobei $n$ die Anzahl von Hindernissen auf der Route ist.\n", + "\n", + "### Vorgehen zur Unterstützenden KI\n", + "\n", + "#### Eingaben und Ausageben\n", + "\n", + "Die Algoritmen zur Wegfindung vom Sailingteam Darmstadt e.V. arbeiten intern mit Polygonen als Hindernissen. Diese werden durch die Schapely bibiliotek implementiert. Da eine variable Anzahl an Polygonen mit einer variablen Form und Position eine Relative komplexer Input muss dieser in eine normiertere Form gebracht werden. Ein binärfarbenes Bild ist dafür die einfachste Form.\n", + "\n", + "Für den Computer spielen sowohl Zentrierung, Skalierung und Ausrichtung der Karte keine Rolle.\n", + "Wir rotieren also die Karte immer so das der Wind von *Norden* kommt und das Boot / die Startposition in der *Mitte* der Karte liegt. Da distanz Linar ist wird davon ausgegangen das Scenario einfach skaliert passend skaliert werden kann.\n", + "\n", + "Die nächste eingabe ist die Zielposition relativ zum Startpunkt. Diese kann endweder durch einen einzelnen Pixel in einem zweiten Farbkanal oder aber in abstrakterer Form an die KI übergeben werden.\n", + "\n", + "Als ausgabe wird eine Heatmap erwarted. Zwei alternative Heatmaps sind relative einfach denkbar.\n", + "\n", + " 1. Eine Headmap der Kurswechselpositionen\n", + " 2. Eine Headmap des Kursverlaufes\n", + "\n", + "Headmaps sind in gewisserweise Bilder. Das Problem wird daher wie ein Bild zu Bild KI Problem betrachted. Diese werden Normalerweise durch ANNs gelöst.\n", + "\n", + "Um eine ANN zu trennieren gibt es immer die Wahl zwischen drei Primären prinzipien. Dem unüberwachten Lernen, dem reinforcement Learning und dem überwachten Lernen. Letzteres ist dabei meist am einfachsten wenn auch nicht immer möglich.\n", + "\n", + "Der Wegfindealgoritmus des Sailing Team Darmstadt e.V. ist zwar noch in der Entwicklung, funktioniert aber hinriechend gut um auf einem normalen PC Scenarien mit Routen zu paaren oder auch diese zu *labeln* um beim KI lingo zu bleiben. Um anpassungsfähig an andere Scenarien zu sein wird eine große menge unterschiedlicher Scenarien und Routen benötigt.\n", + "Da das Haupteinsatzgebiet das Meer ist gehen wir von einer Insellandschaft oder Küstenlandschaft aus.\n", + "\n", + "Zum Finden von Scenarien gibt es zwei Möglichkeiten.\n", + "\n", + " 1. Das auswählen von umgebungen von der Weltkarte und das bestimmen eines Zielpunktes.\n", + " 2. Das generieren von künstlichen Scenarien.\n", + " \n", + "Hier wird die Annaheme getroffen das sich ANNs von einem Datensatz auf den anderen Übetragen lassen.\n", + "Der Aufwand für künstliche Scenarien wird hierbei als geringer eingestuft und daher gewhält." ] }, { - "cell_type": "raw", + "cell_type": "markdown", "metadata": {}, "source": [ - "!pip install h5py" + "## Vorbereitungen\n", + "\n", + "Folgende Python Libararies weren verwendet:\n", + "\n", + " 1. Tensorflow\n", + " Die Tensorflow libaray ist das Werkzeug welches verwendet wurde um neuronale Netz zu modelieren, zu trainieren, zu analysieren und auszuführen.\n", + " \n", + " 2. pyrate\n", + " The pyrate programm is part of the ROS system controlling the roBOOTer. It is used to find routes.\n", + " \n", + " 3. Shapley\n", + " The shapley libarary is able to work with geometricle bodys. Used to generate sceneria and to save them in a vectorised / compact format.\n", + " \n", + " 4. pandas\n", + " A library to save data in tables. Contains lots of functions to analyze and modify the data contained.\n", + " \n", + " 5. numpy\n", + " A library to do mathematiel operations on multidimensional arrays.\n", + " \n", + " 6. matplotlib\n", + " A library to plot diagrams and images.\n", + " \n", + " 6. PIL\n", + " A library to draw and show images.\n", + " \n", + " 7. mapply\n", + " A libarary to use multiprocessing to edit a pandas DataFrame\n", + " \n", + " 8. humanize\n", + " Converts numbers into easily human readable formats.\n", + " \n", + " 9. tqdm\n", + " Used to add process bars to many things." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Sets the path this notebook is executed in to be relative to other the pyrate entrypoints." ] }, { @@ -89,6 +174,14 @@ "%cd /pyrate/" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Imports\n", + "Imports the necessary packages from python and pypi." + ] + }, { "cell_type": "code", "execution_count": 2, @@ -106,13 +199,19 @@ "name": "stderr", "output_type": "stream", "text": [ - "2022-07-12 06:56:55.112232: I tensorflow/core/util/util.cc:169] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.\n", - "2022-07-12 06:56:55.168775: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory\n", - "2022-07-12 06:56:55.168787: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.\n" + "2022-07-12 22:52:53.814974: I tensorflow/core/util/util.cc:169] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.\n", + "2022-07-12 22:52:53.818543: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory\n", + "2022-07-12 22:52:53.818569: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.\n" ] } ], "source": [ + "import sys\n", + "\n", + "# Pins the python version executing the Jupyter Notebook\n", + "assert sys.version_info.major == 3\n", + "assert sys.version_info.minor == 10\n", + "\n", "import os\n", "from typing import Optional, Final, Literal\n", "from math import pi\n", @@ -128,8 +227,7 @@ "from shapely.geometry import Polygon, Point, LineString\n", "from shapely.ops import unary_union, split\n", "import mapply\n", - "import tensorflow as tf\n", - "import tensorflow_addons as tfa" + "import tensorflow as tf" ] }, { @@ -163,6 +261,7 @@ }, "outputs": [], "source": [ + "# Enables a tqdm progress bar for pandas apply\n", "tqdm.pandas()" ] }, @@ -177,12 +276,13 @@ }, "outputs": [], "source": [ + "# Enables and configures multiprocessing for pandas\n", "mapply.init(n_workers=-1, chunk_size=1000, progressbar=True, max_chunks_per_worker=100)" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 62, "metadata": { "ExecuteTime": { "end_time": "2022-07-11T18:34:19.609069Z", @@ -194,10 +294,21 @@ }, "outputs": [], "source": [ + "# Sets the maximum number of optimization steps that can be performed to find a route.\n", + "# Significantly lowered for more speed.\n", "experiments.optimization_param.n_iter_grad = 50\n", + "\n", + "# Disbales verbose outputs from the pyrate library.\n", "experiments.optimization_param.verbose = False" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Paramter settings" + ] + }, { "cell_type": "code", "execution_count": 7, @@ -212,14 +323,29 @@ }, "outputs": [], "source": [ - "SIZE_INNER: Final[int] = 75\n", + "# The scale the route should lie in. Only a mathematical limit.\n", "SIZE_ROUTE: Final[int] = 100\n", + "\n", + "# The outer limit in with the goal need to be palced.\n", + "# Should be smaller than \n", + "SIZE_INNER: Final[int] = 75\n", + "assert SIZE_ROUTE > SIZE_INNER, \"The goal should be well inside the limit placed \"\n", + " \n", + "# The minimum destance from the start that should \n", "MIN_DESTINATION_DISTANCE: Final[int] = 25\n", + "assert SIZE_INNER > MIN_DESTINATION_DISTANCE, \"The goal should be well closer to the outer limit the\"\n", + "\n", + "# The size the ANN input has. Equal to the image size. Should be an on of $n^2$ to be easier compatible with ANNs.\n", "IMG_SIZE: Final[int] = 128\n", + "\n", + "# The size an image should be in to be easily visible by eye.\n", "IMG_SHOW_SIZE: Final[int] = 400\n", + " \n", + "# The number of Files that should be read to train the ANNs\n", "NUMBER_OF_FILES_LIMIT: Final[int] = 1000\n", "\n", - "NO_SHOW = True\n", + "# \n", + "NO_SHOW = False\n", "GENERATE_NEW = True" ] }, @@ -288,7 +414,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 9, @@ -924,7 +1050,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "363f40e4d5e54f0faed4b0075e9cc46e", + "model_id": "a640acf6a79740149c6f477e9889fd75", "version_major": 2, "version_minor": 0 }, @@ -1178,7 +1304,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "bf26cd9622814607959d07ff017ccd3f", + "model_id": "3f9920fc8f3e48858390d61beb5025f0", "version_major": 2, "version_minor": 0 }, @@ -1248,7 +1374,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "4ffd88bf353146fda0c3996f8cbd3e90", + "model_id": "d2f493b8c75c46cebad8e4e5025fe47c", "version_major": 2, "version_minor": 0 }, @@ -1366,7 +1492,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "7e57db07430c4d46a3215d429488de26", + "model_id": "d004186c4993453f82a23d5461b335ca", "version_major": 2, "version_minor": 0 }, @@ -2490,7 +2616,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "f7e41b81204d4feab846da2804e0ed46", + "model_id": "f515ae374e374de7aba6b584b54b9a62", "version_major": 2, "version_minor": 0 }, @@ -2660,17 +2786,17 @@ "name": "stderr", "output_type": "stream", "text": [ - "2022-07-12 06:58:17.372063: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory\n", - "2022-07-12 06:58:17.372095: W tensorflow/stream_executor/cuda/cuda_driver.cc:269] failed call to cuInit: UNKNOWN ERROR (303)\n", - "2022-07-12 06:58:17.372112: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (947f5123542f): /proc/driver/nvidia/version does not exist\n", - "2022-07-12 06:58:17.372659: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 AVX512F AVX512_VNNI FMA\n", + "2022-07-12 22:54:12.025009: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory\n", + "2022-07-12 22:54:12.025051: W tensorflow/stream_executor/cuda/cuda_driver.cc:269] failed call to cuInit: UNKNOWN ERROR (303)\n", + "2022-07-12 22:54:12.025069: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (6c2cdca2902f): /proc/driver/nvidia/version does not exist\n", + "2022-07-12 22:54:12.025335: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 AVX512F AVX512_VNNI FMA\n", "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n" ] }, { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 51, @@ -3023,12 +3149,14 @@ }, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-07-12 06:58:20.782666: I tensorflow/core/profiler/lib/profiler_session.cc:99] Profiler session initializing.\n", - "2022-07-12 06:58:20.782705: I tensorflow/core/profiler/lib/profiler_session.cc:114] Profiler session started.\n", - "2022-07-12 06:58:20.785118: I tensorflow/core/profiler/lib/profiler_session.cc:126] Profiler session tear down.\n" + "ename": "NameError", + "evalue": "name 'tfa' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [61]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m tqdm_callback \u001b[38;5;241m=\u001b[39m \u001b[43mtfa\u001b[49m\u001b[38;5;241m.\u001b[39mcallbacks\u001b[38;5;241m.\u001b[39mTQDMProgressBar(\n\u001b[1;32m 2\u001b[0m leave_epoch_progress\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m, leave_overall_progress\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m, show_epoch_progress\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 3\u001b[0m )\n\u001b[1;32m 5\u001b[0m early_stop \u001b[38;5;241m=\u001b[39m tf\u001b[38;5;241m.\u001b[39mkeras\u001b[38;5;241m.\u001b[39mcallbacks\u001b[38;5;241m.\u001b[39mEarlyStopping(\n\u001b[1;32m 6\u001b[0m monitor\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmean_squared_error\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 7\u001b[0m min_delta\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.0005\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 11\u001b[0m restore_best_weights\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[1;32m 12\u001b[0m )\n\u001b[1;32m 14\u001b[0m tf_board \u001b[38;5;241m=\u001b[39m tf\u001b[38;5;241m.\u001b[39mkeras\u001b[38;5;241m.\u001b[39mcallbacks\u001b[38;5;241m.\u001b[39mTensorBoard(\n\u001b[1;32m 15\u001b[0m log_dir\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m./log_dir\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 16\u001b[0m histogram_freq\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m100\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 23\u001b[0m embeddings_metadata\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 24\u001b[0m )\n", + "\u001b[0;31mNameError\u001b[0m: name 'tfa' is not defined" ] } ], @@ -3065,41 +3193,14 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2022-07-11T18:34:37.387799Z", "start_time": "2022-07-11T18:34:36.925978Z" } }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "b55484203de74cffa729df71d50fdaf6", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/3 [00:00" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "plt.figure(figsize=(17.5, 25))\n", "np_array = np.flip(collected_routes[1, :, :, :], axis=0)\n", @@ -3114,32 +3215,21 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2022-07-11T18:34:37.398038Z", "start_time": "2022-07-11T18:34:37.391964Z" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "(22577, 128, 128, 2)" - ] - }, - "execution_count": 63, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "collected_routes[:, :, :, :2].shape" ] }, { "cell_type": "code", - "execution_count": 64, + "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2022-07-11T18:34:37.769969Z", @@ -3156,32 +3246,21 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2022-07-11T18:34:37.780494Z", "start_time": "2022-07-11T18:34:37.772901Z" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 65, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "train_dataset" ] }, { "cell_type": "code", - "execution_count": 66, + "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2022-07-11T18:34:37.789908Z", @@ -3197,7 +3276,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2022-07-11T18:34:37.800259Z", @@ -3218,73 +3297,7 @@ "start_time": "2022-07-11T18:34:37.804670Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 1/20\n", - " 19/353 [>.............................] - ETA: 6:21 - loss: 0.0221 - binary_crossentropy: 0.0636 - mean_squared_error: 0.0221 - mean_absolute_error: 0.0700" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-07-12 06:58:49.034979: I tensorflow/core/profiler/lib/profiler_session.cc:99] Profiler session initializing.\n", - "2022-07-12 06:58:49.035033: I tensorflow/core/profiler/lib/profiler_session.cc:114] Profiler session started.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " 39/353 [==>...........................] - ETA: 5:57 - loss: 0.0133 - binary_crossentropy: 0.0518 - mean_squared_error: 0.0133 - mean_absolute_error: 0.0476" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-07-12 06:59:12.901657: I tensorflow/core/profiler/lib/profiler_session.cc:66] Profiler session collecting data.\n", - "2022-07-12 06:59:12.987850: I tensorflow/core/profiler/lib/profiler_session.cc:126] Profiler session tear down.\n", - "2022-07-12 06:59:13.081028: I tensorflow/core/profiler/rpc/client/save_profile.cc:136] Creating directory: ./log_dir/plugins/profile/2022_07_12_06_59_12\n", - "\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", - " 40/353 [==>...........................] - ETA: 5:59 - loss: 0.0131 - binary_crossentropy: 0.0515 - mean_squared_error: 0.0131 - mean_absolute_error: 0.0467" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-07-12 06:59:13.155588: I tensorflow/core/profiler/rpc/client/save_profile.cc:142] Dumped gzipped tool data for trace.json.gz to ./log_dir/plugins/profile/2022_07_12_06_59_12/947f5123542f.trace.json.gz\n", - "2022-07-12 06:59:13.254074: I tensorflow/core/profiler/rpc/client/save_profile.cc:136] Creating directory: ./log_dir/plugins/profile/2022_07_12_06_59_12\n", - "\n", - "2022-07-12 06:59:13.261391: I tensorflow/core/profiler/rpc/client/save_profile.cc:142] Dumped gzipped tool data for memory_profile.json.gz to ./log_dir/plugins/profile/2022_07_12_06_59_12/947f5123542f.memory_profile.json.gz\n", - "2022-07-12 06:59:13.263112: I tensorflow/core/profiler/rpc/client/capture_profile.cc:251] Creating directory: ./log_dir/plugins/profile/2022_07_12_06_59_12\n", - "Dumped tool data for xplane.pb to ./log_dir/plugins/profile/2022_07_12_06_59_12/947f5123542f.xplane.pb\n", - "Dumped tool data for overview_page.pb to ./log_dir/plugins/profile/2022_07_12_06_59_12/947f5123542f.overview_page.pb\n", - "Dumped tool data for input_pipeline.pb to ./log_dir/plugins/profile/2022_07_12_06_59_12/947f5123542f.input_pipeline.pb\n", - "Dumped tool data for tensorflow_stats.pb to ./log_dir/plugins/profile/2022_07_12_06_59_12/947f5123542f.tensorflow_stats.pb\n", - "Dumped tool data for kernel_stats.pb to ./log_dir/plugins/profile/2022_07_12_06_59_12/947f5123542f.kernel_stats.pb\n", - "\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "294/353 [=======================>......] - ETA: 1:14 - loss: 0.0046 - binary_crossentropy: 0.0261 - mean_squared_error: 0.0046 - mean_absolute_error: 0.0147" - ] - } - ], + "outputs": [], "source": [ "history = generator.fit(\n", " train_dataset,\n", @@ -3426,6 +3439,31 @@ "!pip install pydot pydotplus graphviz" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "@article{article,\n", + "author = {Jang, Hoyun and Lee, Inwon and Seo, Hyoungseock},\n", + "year = {2017},\n", + "month = {09},\n", + "pages = {4109-4117},\n", + "title = {Effectiveness of CFRP rudder aspect ratio for scale model catamaran racing yacht test},\n", + "volume = {31},\n", + "journal = {Journal of Mechanical Science and Technology},\n", + "doi = {10.1007/s12206-017-0807-8}\n", + "}" + ] + }, { "cell_type": "markdown", "metadata": {