Masterarbeit zur Untersuchung des Ohrs zur Personenauthntifizierung an IT-Systemen mittels CNNs
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Categorization.ipynb 298KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {},
  6. "source": [
  7. "# Kategorisierung der Ohrbilder\n",
  8. "\n",
  9. "Mit diesem Jupyter-Skript werden alle notwendigen Funktionen zur Umsetzung und Auswertung der Kategorisierung von Ohrbildern zusammengefasst. \n",
  10. "Das Jupyter-Skript bezieht sich auf die Masterarbeit: \"Verwendung des menschlichen Ohrs zur Personenauthentifizierung an IT-Systemen mittels CNNs\""
  11. ]
  12. },
  13. {
  14. "cell_type": "markdown",
  15. "metadata": {},
  16. "source": [
  17. "## Bibliotheken importieren\n",
  18. "\n",
  19. "Zunächst werden alle notwendigen Bibliothken importiert\n"
  20. ]
  21. },
  22. {
  23. "cell_type": "code",
  24. "execution_count": 1,
  25. "metadata": {},
  26. "outputs": [],
  27. "source": [
  28. "## Import Libearies ##\n",
  29. "%matplotlib inline\n",
  30. "import cv2\n",
  31. "import numpy as np\n",
  32. "import matplotlib.pyplot as plt\n",
  33. "import matplotlib.image as mpimg\n",
  34. "import pandas as pd\n",
  35. "import os\n",
  36. "\n",
  37. "# Import TORCHVISION with popular datasets, model architectures, \n",
  38. "# and common image transformations for computer vision\n",
  39. "from torchvision import transforms\n",
  40. "import torchvision\n",
  41. "import torchvision.utils\n",
  42. "import torchvision.models as models\n",
  43. "import torchsummary\n",
  44. "\n",
  45. "# Import Debugging method for set_trace\n",
  46. "from IPython.core.debugger import set_trace\n",
  47. "import logging\n",
  48. "\n",
  49. "# Import Time Features\n",
  50. "import datetime\n",
  51. "import time\n",
  52. "\n",
  53. "# Import TORCH for Data-Structures for multi-dimensional tensors \n",
  54. "# and mathematical operations\n",
  55. "import torch\n",
  56. "from torch.utils.tensorboard import SummaryWriter\n",
  57. "import torch.nn as nn\n",
  58. "import torch.nn.functional as F\n",
  59. "from torch.utils.data import DataLoader\n",
  60. "import torch.optim as optim\n",
  61. "import torch_utils\n",
  62. "#import python_utils\n",
  63. "#import utils\n",
  64. "#from ignite.metrics import EpochMetric \n",
  65. "\n",
  66. "# Import Winsound to play a *.wav-File\n",
  67. "# and Counter for counting numbers in an array\n",
  68. "import winsound\n",
  69. "from collections import Counter\n",
  70. "\n",
  71. "# Import Random Libery\n",
  72. "import random\n",
  73. "from random import shuffle\n",
  74. "\n",
  75. "# Import IPYWIDGET for interactive HTML widgets for Jupyter notebooks\n",
  76. "import ipywidgets as wg\n",
  77. "from IPython.display import display\n",
  78. "\n",
  79. "# Import PYTORCH LIGHTNING as a PyTorch research framework\n",
  80. "from pytorch_lightning.metrics.classification import ROC, F1 \n",
  81. "from pytorch_lightning.metrics.functional.classification import multiclass_auroc\n",
  82. "#from pytorch_lightning.metrics import Precision, functional, Recall\n",
  83. "from pytorch_lightning.metrics.functional.classification import auc, auroc, multiclass_roc, f1_score\n",
  84. "from pytorch_lightning.metrics.utils import to_onehot\n",
  85. "\n",
  86. "from pytorch_lightning.metrics.functional import roc\n",
  87. "#from pytorch_lightning.metrics.functional import precision_recall_curve\n",
  88. "from pytorch_lightning.metrics import Accuracy\n",
  89. "from pytorch_lightning.metrics.classification import AveragePrecision\n",
  90. "\n",
  91. "\n",
  92. "# Import ScikitLearn for AUC-Score\n",
  93. "#from sklearn.metrics import roc_auc_score"
  94. ]
  95. },
  96. {
  97. "cell_type": "markdown",
  98. "metadata": {},
  99. "source": [
  100. "## Festlegung: Prozessor oder Graphikkarte\n",
  101. "\n",
  102. "Falls NVIDIA-Graphikkarte und CUDA vorhanden ist, dann wird die GPU für Berechnungen genutzt"
  103. ]
  104. },
  105. {
  106. "cell_type": "code",
  107. "execution_count": 2,
  108. "metadata": {},
  109. "outputs": [
  110. {
  111. "name": "stdout",
  112. "output_type": "stream",
  113. "text": [
  114. "cuda\n"
  115. ]
  116. }
  117. ],
  118. "source": [
  119. "# Read Device: Choose CUDA, if NVIDIA GPU is avaiabel\n",
  120. "DEVICE = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
  121. "print(DEVICE)"
  122. ]
  123. },
  124. {
  125. "cell_type": "markdown",
  126. "metadata": {},
  127. "source": [
  128. "## Voreinstellungen - Hilfsfunktionen\n",
  129. "\n",
  130. "* **secs_to_HMS():** Berechnte Sekunden in HH:MM:SS um\n",
  131. "* **WaitTime_Finished():** Gibt eine Audio-Datei aus, wenn Training und Testen beendet ist"
  132. ]
  133. },
  134. {
  135. "cell_type": "code",
  136. "execution_count": 3,
  137. "metadata": {},
  138. "outputs": [],
  139. "source": [
  140. "## Convert Seconds to Hours, Minutes and Seconds ##\n",
  141. "def secs_to_HMS(secs):\n",
  142. " if (secs < 3600):\n",
  143. " return datetime.datetime.fromtimestamp(secs).strftime('%M:%S'), \"[MM:SS]\"\n",
  144. " else:\n",
  145. " return datetime.datetime.fromtimestamp(secs).strftime('%H:%M:%S'), \"[HH:MM:SS]\"\n",
  146. "\n",
  147. "## Acustic Sound if Model-Trainings finished ##\n",
  148. "def WaitTime_Finished():\n",
  149. " for i in range(2):\n",
  150. " files=os.listdir(\"Sound/\")\n",
  151. " file=random.choice(files)\n",
  152. " winsound.PlaySound(\"Sound/\"+str(file), winsound.SND_FILENAME)\n",
  153. " time.sleep(2)"
  154. ]
  155. },
  156. {
  157. "cell_type": "markdown",
  158. "metadata": {},
  159. "source": [
  160. "## Funtionen um Datensätze festzulegen, einzulesen und anzuzeigen\n",
  161. "\n",
  162. "* **ChooseDir():** return: Datensatz-Verzeichnis und Datensatz-String \n",
  163. "* **Show_Dataset_Picture():** Zeigt erstes Bild eines Datensatzes\n",
  164. "* **Create_Dataset():** Erzeugt Datensatz-Arrays für Training und Testen\n",
  165. "* **Create_Dataset():** Erzeugt erweiterte Datensatz-Arrays für Training und Testen\n",
  166. "\n",
  167. "\n",
  168. "Hinweis: Nur 20 Probanden des AMI-Datensatzes sind in den Datenätzen vorhanden. Mehr konnte bei Git nicht hochgeladen werden."
  169. ]
  170. },
  171. {
  172. "cell_type": "code",
  173. "execution_count": 4,
  174. "metadata": {},
  175. "outputs": [],
  176. "source": [
  177. "## Indirect Path for Linux and Windows## \n",
  178. "def ChooseDir(datadir):\n",
  179. " if(datadir == 'CP'):\n",
  180. " return \"Datensaetze/CP\", \"CP\"\n",
  181. " if(datadir == 'AMI'):\n",
  182. " return \"Datensaetze/AMI\", \"AMI\"\n",
  183. " if(datadir == 'AWE'):\n",
  184. " return \"Datensaetze/AWE\", \"AWE\"\n",
  185. " if(datadir == 'EarVN'):\n",
  186. " return \"Datensaetze/EarVN_1_0\", \"EarVN_1_0\"\n",
  187. " if(datadir == 'UERC'):\n",
  188. " return \"Datensaetze/UERC\", \"UERC\"\n",
  189. "\n",
  190. "## Show first Picture of choosen Dataset \n",
  191. "def Show_Dataset_Picture(datadir, categories):\n",
  192. " for category in categories:\n",
  193. " path = os.path.join(datadir, category)\n",
  194. " for img in os.listdir(path):\n",
  195. " img_array = cv2.imread(os.path.join(path, img))\n",
  196. " plt.imshow(cv2.cvtColor(img_array, cv2.COLOR_BGR2RGB))\n",
  197. " plt.show()\n",
  198. " break\n",
  199. " break \n",
  200. " \n",
  201. "\n",
  202. "## Create normal Dataset \n",
  203. "def Create_Dataset(datadir, categories):\n",
  204. " ## Transformer for Images ##\n",
  205. " ## For PyTorch Models use: mean = [0.4318, 0.4660, 0.5889], std = [0.1752, 0.1893, 0.2096]\n",
  206. " transformer = transforms.Compose(\n",
  207. " [transforms.ToTensor(),\n",
  208. " transforms.Normalize((0.4318, 0.4660, 0.5889), (0.1752, 0.1893, 0.2096))\n",
  209. " ])\n",
  210. "\n",
  211. " ## Define Size of Images; \n",
  212. " ## For PyTorch Models use: IMG_Size = 224 \n",
  213. " IMG_SIZE = 224\n",
  214. "\n",
  215. " ## Create normal dataset for all Databases and Categories \n",
  216. " for category in categories:\n",
  217. " ## Get path of each Category\n",
  218. " path = os.path.join(datadir, category)\n",
  219. " \n",
  220. " ## Create class numbers for each Category\n",
  221. " class_num = categories.index(category)\n",
  222. " \n",
  223. " ## Calculate train_share for Train- and Testdataset\n",
  224. " count_train_share = (len(os.listdir(path)))*train_share\n",
  225. " counter = 1\n",
  226. " \n",
  227. " ## Get all Images of current Category\n",
  228. " os_listdir = os.listdir(path)\n",
  229. " ## Sort the Pictures-Path of each category randomly\n",
  230. " random.shuffle(os_listdir)\n",
  231. "\n",
  232. " for img in os_listdir:\n",
  233. " try:\n",
  234. " ## Read, Resize, and Transform image\n",
  235. " img_array = cv2.imread(os.path.join(path, img))\n",
  236. " img_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))\n",
  237. " img_array = transformer(img_array)\n",
  238. " \n",
  239. " ## Split Images to Train- and Test-Dataset-Array\n",
  240. " if(counter <= count_train_share):\n",
  241. " dataset_train.append([img_array, class_num])\n",
  242. " counter += 1\n",
  243. " else:\n",
  244. " dataset_test.append([img_array, class_num])\n",
  245. " except Exception as e:\n",
  246. " pass\n",
  247. " \n",
  248. " ## Rondomly sortig dataset_train and dataset_test Arrays\n",
  249. " random.shuffle(dataset_train)\n",
  250. " random.shuffle(dataset_test)\n",
  251. "\n",
  252. "\n",
  253. "\n",
  254. "## Create expand Dataset \n",
  255. "def Create_Dataset_Expand(datadir, categories):\n",
  256. " ## Transformer for Images: ToTensor() ad Normalize \n",
  257. " ## For PyTorch Models: to Normalize images use: mean = [0.4318, 0.4660, 0.5889], std = [0.1752, 0.1893, 0.2096]\n",
  258. " transformer = transforms.Compose(\n",
  259. " [transforms.ToTensor(),\n",
  260. " transforms.Normalize((0.4318, 0.4660, 0.5889), (0.1752, 0.1893, 0.2096)),\n",
  261. " ])\n",
  262. "\n",
  263. " ## Define Size of Images; \n",
  264. " ## For PyTorch Models use: IMG_Size = 224 \n",
  265. " IMG_SIZE = 224\n",
  266. "\n",
  267. " ## Create expand dataset for all Databases (except for: EarVN1.0 Database)\n",
  268. " for i in range(4):\n",
  269. " for category in categories:\n",
  270. " ## Get path of each Category\n",
  271. " path = os.path.join(datadir, category)\n",
  272. " \n",
  273. " ## Create class numbers for each Category\n",
  274. " class_num = categories.index(category)\n",
  275. " \n",
  276. " ## Calculate train_share for Train- and Testdataset\n",
  277. " count_train_share = round((len(os.listdir(path)))*train_share)\n",
  278. " counter = 1\n",
  279. " \n",
  280. " ## Get all Images of current Category\n",
  281. " os_listdir = os.listdir(path)\n",
  282. " \n",
  283. " ## Sort the Pictures-Path of each category randomly\n",
  284. " random.shuffle(os_listdir)\n",
  285. " \n",
  286. " for img in os_listdir:\n",
  287. " ## Read, Resize, and Transform image\n",
  288. " img_array = cv2.imread(os.path.join(path, img))\n",
  289. " img_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))\n",
  290. " \n",
  291. " ## Rotate Image\n",
  292. " rows,cols,ch = img_array.shape\n",
  293. " rotate_numbers = [0, 90, 180, 270]\n",
  294. " rotate_number = rotate_numbers[i]\n",
  295. " M = cv2.getRotationMatrix2D(((cols-1)/2.0,(rows-1)/2.0),rotate_number,1) ## cols-1 and rows-1 are the coordinate limits.\n",
  296. " img_array = cv2.warpAffine(img_array,M,(cols,rows))\n",
  297. " \n",
  298. " ## Transform the img-Array\n",
  299. " img_array = transformer(img_array)\n",
  300. " \n",
  301. " ## Split Images to Train- and Test-Dataset-Array\n",
  302. " if(counter <= count_train_share):\n",
  303. " dataset_train.append([img_array, class_num])\n",
  304. " counter += 1\n",
  305. " else:\n",
  306. " dataset_test.append([img_array, class_num])\n",
  307. " \n",
  308. " ## Randomly sortig dataset_train and dataset_test Arrays\n",
  309. " random.shuffle(dataset_train)\n",
  310. " random.shuffle(dataset_test)"
  311. ]
  312. },
  313. {
  314. "cell_type": "markdown",
  315. "metadata": {},
  316. "source": [
  317. "## Funktionen um vortrainiertes Netzwerk festzulegen\n",
  318. "\n",
  319. "* **Network_Choice():** Gibt Netzwerk und Netzwerk-String zurück"
  320. ]
  321. },
  322. {
  323. "cell_type": "code",
  324. "execution_count": 5,
  325. "metadata": {},
  326. "outputs": [],
  327. "source": [
  328. "## All pretrained Networks from PyTorch ##\n",
  329. "\n",
  330. "network_name = 'nix'\n",
  331. "\n",
  332. "# Function to choose network\n",
  333. "# return: pretrained Network, Name of Network\n",
  334. "def Network_Choice(netw): \n",
  335. " if(netw == 'vgg11'):\n",
  336. " return models.vgg11(pretrained=True).to(DEVICE), \"VGG11\"\n",
  337. " if(netw == 'vgg11bn'):\n",
  338. " return models.vgg11_bn(pretrained=True).to(DEVICE), \"VGG11bn\"\n",
  339. " if(netw == 'resnet18'):\n",
  340. " return models.resnet18(pretrained=True).to(DEVICE), \"ResNet18\"\n",
  341. " if(netw == 'resnet34'):\n",
  342. " return models.resnet34(pretrained=True).to(DEVICE), \"ResNet34\"\n",
  343. " if(netw == 'alexnet'):\n",
  344. " return models.alexnet(pretrained=True).to(DEVICE), \"AlexNet\"\n",
  345. " if(netw == 'squeezenet1_0'):\n",
  346. " return models.squeezenet1_0(pretrained=True).to(DEVICE), \"SqueezeNet-1-0\" \n",
  347. " if(netw == 'GoogLeNet'):\n",
  348. " return models.googlenet(pretrained=True).to(DEVICE), \"GoogLeNet\" \n",
  349. " if(netw == 'shufflenet_v2_x0_5'):\n",
  350. " return models.shufflenet_v2_x0_5(pretrained=True).to(DEVICE), \"Shufflenet-v2-x0_5\" \n",
  351. " if(netw == 'resnext101_32x8d'):\n",
  352. " return models.resnext101_32x8d(pretrained=True).to(DEVICE), \"Resnext101-32x8d\""
  353. ]
  354. },
  355. {
  356. "cell_type": "markdown",
  357. "metadata": {},
  358. "source": [
  359. "## Funktionen für die Ausgabe von Ohrbildern und dazugehöriger Labels\n",
  360. "\n",
  361. "* **imshow():** Zeigt Bild\n",
  362. "* **matplotlib_imshow():** Ordnet 4 Ohrbilder mit dazugehörigem Label an"
  363. ]
  364. },
  365. {
  366. "cell_type": "code",
  367. "execution_count": 6,
  368. "metadata": {},
  369. "outputs": [],
  370. "source": [
  371. "# functions to show an image\n",
  372. "\n",
  373. "# Inverse the transformation of the images\n",
  374. "invTrans = transforms.Compose([ transforms.Normalize(mean = [ 0., 0., 0. ],\n",
  375. " std = [ 1/0.1752, 1/0.1893, 1/0.2096 ]),\n",
  376. " transforms.Normalize(mean = [ -0.4318, -0.4660, -0.5889 ],\n",
  377. " std = [ 1., 1., 1. ]),\n",
  378. " ])\n",
  379. "\n",
  380. "def imshow(img):\n",
  381. " img = invTrans(img)\n",
  382. " npimg = img.numpy()\n",
  383. " plt.imshow(np.transpose(npimg, (1, 2, 0)))\n",
  384. " plt.show()\n",
  385. " \n",
  386. "# helper function to show an image\n",
  387. "# (used in the `plot_classes_preds` function below)\n",
  388. "def matplotlib_imshow(img, one_channel=False):\n",
  389. " #set_trace()\n",
  390. " img = invTrans(img) # unnormalize\n",
  391. " if one_channel:\n",
  392. " img = img.mean(dim=0)\n",
  393. " npimg = img.numpy()\n",
  394. " #set_trace()\n",
  395. " if one_channel:\n",
  396. " plt.imshow(npimg) \n",
  397. " else:\n",
  398. " plt.imshow(np.transpose(npimg, (1, 2, 0)))"
  399. ]
  400. },
  401. {
  402. "cell_type": "markdown",
  403. "metadata": {},
  404. "source": [
  405. "## Klasse zur Berechnung von Top-1 und Top-5 Accuracy"
  406. ]
  407. },
  408. {
  409. "cell_type": "code",
  410. "execution_count": 7,
  411. "metadata": {},
  412. "outputs": [],
  413. "source": [
  414. "## Class of Top-1 and Top-5 Accuracy\n",
  415. "class AvgrageMeter(object):\n",
  416. "\n",
  417. " def __init__(self):\n",
  418. " self.reset()\n",
  419. "\n",
  420. " def reset(self):\n",
  421. " self.avg = 0\n",
  422. " self.sum = 0\n",
  423. " self.cnt = 0\n",
  424. "\n",
  425. " def update(self, val, n=1):\n",
  426. " self.sum += val * n\n",
  427. " self.cnt += n\n",
  428. " self.avg = self.sum / self.cnt"
  429. ]
  430. },
  431. {
  432. "cell_type": "markdown",
  433. "metadata": {},
  434. "source": [
  435. "## Accuracy jeder Kategorie in Log-File (TXT-File)"
  436. ]
  437. },
  438. {
  439. "cell_type": "code",
  440. "execution_count": 8,
  441. "metadata": {},
  442. "outputs": [],
  443. "source": [
  444. "## Write Accuracy of every Categorie to Log-Files (TXT-File) ##\n",
  445. "def Write_Each_Categorie_Acc_To_Editor(database, net, acc_per_categorie):\n",
  446. " logfile_path = './Log_Files/' + database + '/' + str(current_time) + '_' + net + '.txt'\n",
  447. " datei = open(logfile_path, 'a')\n",
  448. " datei.write(acc_per_categorie)\n",
  449. " datei.close()"
  450. ]
  451. },
  452. {
  453. "cell_type": "markdown",
  454. "metadata": {},
  455. "source": [
  456. "## Konfiguration\n",
  457. "\n",
  458. "Auswahl von: \n",
  459. "* Datensatz\n",
  460. "* Netzwerk\n",
  461. "* Normaler/Erweiterter Datensatz\n",
  462. "* Trainshare\n",
  463. "* Batch Size Train\n",
  464. "* Batch Size Test\n",
  465. "* Learning Rate\n",
  466. "* Momentum\n",
  467. "\n",
  468. "Hinweis: Konfiguration ausführen, Auswahl festlegen und weiter zum nächsten Abschnitt"
  469. ]
  470. },
  471. {
  472. "cell_type": "code",
  473. "execution_count": 9,
  474. "metadata": {},
  475. "outputs": [
  476. {
  477. "data": {
  478. "application/vnd.jupyter.widget-view+json": {
  479. "model_id": "03acf4dac0f945c6b10f19c9efda3ed6",
  480. "version_major": 2,
  481. "version_minor": 0
  482. },
  483. "text/plain": [
  484. "Dropdown(description='Dataset:', index=1, options=('CP', 'AMI', 'AWE', 'EarVN', 'UERC'), value='AMI')"
  485. ]
  486. },
  487. "metadata": {},
  488. "output_type": "display_data"
  489. },
  490. {
  491. "data": {
  492. "application/vnd.jupyter.widget-view+json": {
  493. "model_id": "4c28430bc0714174bf0b1de6587f8f3c",
  494. "version_major": 2,
  495. "version_minor": 0
  496. },
  497. "text/plain": [
  498. "Dropdown(description='Network:', options=('vgg11', 'vgg11bn', 'resnet18', 'resnet34', 'alexnet', 'squeezenet1_…"
  499. ]
  500. },
  501. "metadata": {},
  502. "output_type": "display_data"
  503. },
  504. {
  505. "data": {
  506. "application/vnd.jupyter.widget-view+json": {
  507. "model_id": "33ae1c0ce7ba43948f1a5160cc709d64",
  508. "version_major": 2,
  509. "version_minor": 0
  510. },
  511. "text/plain": [
  512. "Dropdown(description='Normal/Exp:', options=('Normal_Network', 'Expand_Network'), value='Normal_Network')"
  513. ]
  514. },
  515. "metadata": {},
  516. "output_type": "display_data"
  517. },
  518. {
  519. "data": {
  520. "application/vnd.jupyter.widget-view+json": {
  521. "model_id": "d71b8c9fbc4f42b9849f82d148e22656",
  522. "version_major": 2,
  523. "version_minor": 0
  524. },
  525. "text/plain": [
  526. "BoundedFloatText(value=0.8, description='Trainshare:', max=1.0, step=0.1)"
  527. ]
  528. },
  529. "metadata": {},
  530. "output_type": "display_data"
  531. },
  532. {
  533. "data": {
  534. "application/vnd.jupyter.widget-view+json": {
  535. "model_id": "6792a002f8ff43d794f7833ecbb0eddf",
  536. "version_major": 2,
  537. "version_minor": 0
  538. },
  539. "text/plain": [
  540. "BoundedIntText(value=4, description='Batch_Train:', min=1)"
  541. ]
  542. },
  543. "metadata": {},
  544. "output_type": "display_data"
  545. },
  546. {
  547. "data": {
  548. "application/vnd.jupyter.widget-view+json": {
  549. "model_id": "99ed5d89518c49acb526ea652ffbf8e4",
  550. "version_major": 2,
  551. "version_minor": 0
  552. },
  553. "text/plain": [
  554. "BoundedIntText(value=4, description='Batch_Test:', min=1)"
  555. ]
  556. },
  557. "metadata": {},
  558. "output_type": "display_data"
  559. },
  560. {
  561. "data": {
  562. "application/vnd.jupyter.widget-view+json": {
  563. "model_id": "72cfe0750b3f4adcafad0cd48d4ad42d",
  564. "version_major": 2,
  565. "version_minor": 0
  566. },
  567. "text/plain": [
  568. "BoundedFloatText(value=0.001, description='Learning_Rate', max=1.0, step=0.0001)"
  569. ]
  570. },
  571. "metadata": {},
  572. "output_type": "display_data"
  573. },
  574. {
  575. "data": {
  576. "application/vnd.jupyter.widget-view+json": {
  577. "model_id": "16ffa6aca9b84fb4852949a9b1ba39ad",
  578. "version_major": 2,
  579. "version_minor": 0
  580. },
  581. "text/plain": [
  582. "BoundedFloatText(value=0.8, description='Momentum: ', max=1.0, step=0.1)"
  583. ]
  584. },
  585. "metadata": {},
  586. "output_type": "display_data"
  587. }
  588. ],
  589. "source": [
  590. "## Choose Dataset\n",
  591. "datadir_choose = wg.Dropdown(\n",
  592. " options=['CP', 'AMI', 'AWE', 'EarVN', 'UERC'],\n",
  593. " value='AMI',\n",
  594. " description='Dataset:',\n",
  595. " disabled=False,\n",
  596. " button_style=''\n",
  597. ")\n",
  598. "\n",
  599. "## Choose Network\n",
  600. "network_string_choose = wg.Dropdown(\n",
  601. " options=['vgg11','vgg11bn','resnet18','resnet34','alexnet','squeezenet1_0','GoogLeNet','shufflenet_v2_x0_5','resnext101_32x8d', 'siamese'],\n",
  602. " value='vgg11',\n",
  603. " description='Network:',\n",
  604. " disabled=False,\n",
  605. " button_style=''\n",
  606. ")\n",
  607. "\n",
  608. "## Choose Normal or expand network\n",
  609. "normal_expand_string_choose = wg.Dropdown(\n",
  610. " options=['Normal_Network', 'Expand_Network'],\n",
  611. " value='Normal_Network',\n",
  612. " description='Normal/Exp:',\n",
  613. " disabled=False,\n",
  614. " button_style=''\n",
  615. ")\n",
  616. "\n",
  617. "## Choose Trainshare\n",
  618. "trainshare_choose = wg.BoundedFloatText(\n",
  619. " value=0.8,\n",
  620. " min=0,\n",
  621. " max=1,\n",
  622. " step=0.1,\n",
  623. " description='Trainshare:',\n",
  624. " disabled=False\n",
  625. ")\n",
  626. "\n",
  627. "## Choose Batch_Size for Training\n",
  628. "batch_train = wg.BoundedIntText(\n",
  629. " value=4,\n",
  630. " min=1,\n",
  631. " max=100,\n",
  632. " step=1,\n",
  633. " description='Batch_Train:',\n",
  634. " disabled=False\n",
  635. ")\n",
  636. "\n",
  637. "## Choose Batch_Size for Testing\n",
  638. "batch_test = wg.BoundedIntText(\n",
  639. " value=4,\n",
  640. " min=1,\n",
  641. " max=100,\n",
  642. " step=1,\n",
  643. " description='Batch_Test:',\n",
  644. " disabled=False\n",
  645. ")\n",
  646. "\n",
  647. "## Choose Learning-Rate\n",
  648. "learning_rate_choose = wg.BoundedFloatText(\n",
  649. " value=0.001,\n",
  650. " min=0,\n",
  651. " max=1,\n",
  652. " step=0.0001,\n",
  653. " description='Learning_Rate',\n",
  654. " disabled=False\n",
  655. ")\n",
  656. "\n",
  657. "## Choose \n",
  658. "momentum_choose = wg.BoundedFloatText(\n",
  659. " value=0.8,\n",
  660. " min=0,\n",
  661. " max=1,\n",
  662. " step=0.1,\n",
  663. " description='Momentum: ',\n",
  664. " disabled=False\n",
  665. ")\n",
  666. "\n",
  667. "\n",
  668. "display(datadir_choose, network_string_choose, normal_expand_string_choose, trainshare_choose, batch_train, batch_test, learning_rate_choose, momentum_choose)"
  669. ]
  670. },
  671. {
  672. "cell_type": "markdown",
  673. "metadata": {},
  674. "source": [
  675. "## Datensatz generieren\n",
  676. "\n",
  677. "Mit den bereits beschriebenen Funktionen werden alle Einstellungen ausgelesen und ein Datensatz, sowie die Kategorien eingelesen\n"
  678. ]
  679. },
  680. {
  681. "cell_type": "code",
  682. "execution_count": 10,
  683. "metadata": {},
  684. "outputs": [],
  685. "source": [
  686. "## Arrays for Dataset and Categories ##\n",
  687. "dataset_train = []\n",
  688. "dataset_test = []\n",
  689. "CATEGORIES = []\n",
  690. "img_array = []\n",
  691. "\n",
  692. "## Read all choosen \n",
  693. "datadir = datadir_choose.value\n",
  694. "network_string = network_string_choose.value\n",
  695. "normal_expand = normal_expand_string_choose.value\n",
  696. "train_share = trainshare_choose.value\n",
  697. "batch_size_train = batch_train.value\n",
  698. "batch_size_test = batch_test.value\n",
  699. "learning_rate = learning_rate_choose.value\n",
  700. "momentum = momentum_choose.value\n",
  701. "\n",
  702. "\n",
  703. "## Choose Datadirectory to the Dataset ##\n",
  704. "DATADIR, Database = ChooseDir(datadir)\n",
  705. "\n",
  706. "## Read and list all Categories of a Dataset \n",
  707. "CATEGORIES = os.listdir(DATADIR)\n",
  708. "\n",
  709. "## Get Length of Categories for chosen Dataset \n",
  710. "len_classes = len(CATEGORIES)\n",
  711. "\n",
  712. "## Create Dataset for Training and Testing\n",
  713. "if(normal_expand == 'Normal_Network'):\n",
  714. " Create_Dataset(DATADIR, CATEGORIES)\n",
  715. "elif(normal_expand == 'Expand_Network'):\n",
  716. " Create_Dataset_Expand(DATADIR, CATEGORIES)\n",
  717. "else:\n",
  718. " print('False: Choosen Normal/Expand')"
  719. ]
  720. },
  721. {
  722. "cell_type": "markdown",
  723. "metadata": {},
  724. "source": [
  725. "## Einstellungen Anzeigen\n"
  726. ]
  727. },
  728. {
  729. "cell_type": "code",
  730. "execution_count": 11,
  731. "metadata": {},
  732. "outputs": [
  733. {
  734. "data": {
  735. "image/png": "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\n",
  736. "text/plain": [
  737. "<Figure size 432x288 with 1 Axes>"
  738. ]
  739. },
  740. "metadata": {
  741. "needs_background": "light"
  742. },
  743. "output_type": "display_data"
  744. },
  745. {
  746. "name": "stdout",
  747. "output_type": "stream",
  748. "text": [
  749. "Datensatz: AMI\n",
  750. "\n",
  751. "Anzahl der Bilder insgesamt:\t 140\n",
  752. "Anzahl der Trainingsdatensätze:\t 100\n",
  753. "Anzahl der Testdatensätze:\t 40\n",
  754. "\n",
  755. "Kategorien: ['000', '001', '002', '003', '004', '005', '007', '008', '009', '010', '011', '012', '013', '014', '018', '019', '020', '026', '027', '028']\n",
  756. "20\n"
  757. ]
  758. }
  759. ],
  760. "source": [
  761. "## Show first picture of the choosen Dataset\n",
  762. "Show_Dataset_Picture(DATADIR, CATEGORIES)\n",
  763. "\n",
  764. "print(f'Datensatz: {Database}')\n",
  765. "print(f'\\nAnzahl der Bilder insgesamt:\\t {len(dataset_train)+len(dataset_test)}')\n",
  766. "print(f\"Anzahl der Trainingsdatensätze:\\t {len(dataset_train)}\")\n",
  767. "print(f\"Anzahl der Testdatensätze:\\t {len(dataset_test)}\")\n",
  768. "print(f'\\nKategorien: {CATEGORIES}')\n",
  769. "print(f'{len(CATEGORIES)}')\n"
  770. ]
  771. },
  772. {
  773. "cell_type": "markdown",
  774. "metadata": {},
  775. "source": [
  776. "## Train- und Testloader festlegen"
  777. ]
  778. },
  779. {
  780. "cell_type": "code",
  781. "execution_count": 12,
  782. "metadata": {},
  783. "outputs": [],
  784. "source": [
  785. "## Create Train-DataLoader\n",
  786. "train_loader = DataLoader(dataset_train, batch_size=batch_size_train, shuffle=True)\n",
  787. "\n",
  788. "## Create Test-DataLoader\n",
  789. "test_loader = DataLoader(dataset_test, batch_size=batch_size_test, shuffle=True)"
  790. ]
  791. },
  792. {
  793. "cell_type": "markdown",
  794. "metadata": {},
  795. "source": [
  796. "## Netzwerk festlegen\n",
  797. "\n",
  798. "Legt Netzwerk fest und zeigt die Übersicht der Netzwerk-Struktur"
  799. ]
  800. },
  801. {
  802. "cell_type": "code",
  803. "execution_count": 13,
  804. "metadata": {},
  805. "outputs": [
  806. {
  807. "name": "stdout",
  808. "output_type": "stream",
  809. "text": [
  810. "VGG11\n",
  811. "----------------------------------------------------------------\n",
  812. " Layer (type) Output Shape Param #\n",
  813. "================================================================\n",
  814. " Conv2d-1 [-1, 64, 224, 224] 1,792\n",
  815. " ReLU-2 [-1, 64, 224, 224] 0\n",
  816. " MaxPool2d-3 [-1, 64, 112, 112] 0\n",
  817. " Conv2d-4 [-1, 128, 112, 112] 73,856\n",
  818. " ReLU-5 [-1, 128, 112, 112] 0\n",
  819. " MaxPool2d-6 [-1, 128, 56, 56] 0\n",
  820. " Conv2d-7 [-1, 256, 56, 56] 295,168\n",
  821. " ReLU-8 [-1, 256, 56, 56] 0\n",
  822. " Conv2d-9 [-1, 256, 56, 56] 590,080\n",
  823. " ReLU-10 [-1, 256, 56, 56] 0\n",
  824. " MaxPool2d-11 [-1, 256, 28, 28] 0\n",
  825. " Conv2d-12 [-1, 512, 28, 28] 1,180,160\n",
  826. " ReLU-13 [-1, 512, 28, 28] 0\n",
  827. " Conv2d-14 [-1, 512, 28, 28] 2,359,808\n",
  828. " ReLU-15 [-1, 512, 28, 28] 0\n",
  829. " MaxPool2d-16 [-1, 512, 14, 14] 0\n",
  830. " Conv2d-17 [-1, 512, 14, 14] 2,359,808\n",
  831. " ReLU-18 [-1, 512, 14, 14] 0\n",
  832. " Conv2d-19 [-1, 512, 14, 14] 2,359,808\n",
  833. " ReLU-20 [-1, 512, 14, 14] 0\n",
  834. " MaxPool2d-21 [-1, 512, 7, 7] 0\n",
  835. "AdaptiveAvgPool2d-22 [-1, 512, 7, 7] 0\n",
  836. " Linear-23 [-1, 4096] 102,764,544\n",
  837. " ReLU-24 [-1, 4096] 0\n",
  838. " Dropout-25 [-1, 4096] 0\n",
  839. " Linear-26 [-1, 4096] 16,781,312\n",
  840. " ReLU-27 [-1, 4096] 0\n",
  841. " Dropout-28 [-1, 4096] 0\n",
  842. " Linear-29 [-1, 1000] 4,097,000\n",
  843. "================================================================\n",
  844. "Total params: 132,863,336\n",
  845. "Trainable params: 132,863,336\n",
  846. "Non-trainable params: 0\n",
  847. "----------------------------------------------------------------\n",
  848. "Input size (MB): 0.57\n",
  849. "Forward/backward pass size (MB): 125.37\n",
  850. "Params size (MB): 506.83\n",
  851. "Estimated Total Size (MB): 632.78\n",
  852. "----------------------------------------------------------------\n"
  853. ]
  854. }
  855. ],
  856. "source": [
  857. "## Get choosen Network and Network-Name\n",
  858. "network, network_name = Network_Choice(network_string)\n",
  859. "print(network_name)\n",
  860. "\n",
  861. "## Show Network-Archticture with all Layers and Number of Parameters\n",
  862. "torchsummary.summary(network, (3, 224, 224), device=DEVICE.type)"
  863. ]
  864. },
  865. {
  866. "cell_type": "markdown",
  867. "metadata": {},
  868. "source": [
  869. "## Festlegung des eindeutigen Stempels\n",
  870. "\n",
  871. "Eindeutiger Stempel mit Uhrzeit, um CSV-, TXT- und Log-Files wiederzuerkennen"
  872. ]
  873. },
  874. {
  875. "cell_type": "code",
  876. "execution_count": 14,
  877. "metadata": {},
  878. "outputs": [
  879. {
  880. "name": "stdout",
  881. "output_type": "stream",
  882. "text": [
  883. "2021_02_27-21_22_49\n"
  884. ]
  885. }
  886. ],
  887. "source": [
  888. "## Use actual Time for individual Stamp ##\n",
  889. "current_time = datetime.datetime.now().strftime(\"%Y_%m_%d-%H_%M_%S\")\n",
  890. "print(current_time)\n",
  891. "\n",
  892. "## Unique Stamp for the identification of networks, graphs, train- and Testdata\n",
  893. "stamp = current_time + '_' + Database + '_' + network_name"
  894. ]
  895. },
  896. {
  897. "cell_type": "markdown",
  898. "metadata": {},
  899. "source": [
  900. "## Festlegung 'writer' für Tensorboard"
  901. ]
  902. },
  903. {
  904. "cell_type": "code",
  905. "execution_count": 15,
  906. "metadata": {},
  907. "outputs": [],
  908. "source": [
  909. "writer = SummaryWriter('runs/' + current_time + '_' + Database + '_' + network_name)"
  910. ]
  911. },
  912. {
  913. "cell_type": "markdown",
  914. "metadata": {},
  915. "source": [
  916. "## Festlegung von Optimizer und Loss-Function"
  917. ]
  918. },
  919. {
  920. "cell_type": "code",
  921. "execution_count": 16,
  922. "metadata": {},
  923. "outputs": [],
  924. "source": [
  925. "## Choose SGD (Stochastic Gradient Descent) as optimizer\n",
  926. "optimizer = optim.SGD(network.parameters(), lr=learning_rate, momentum=momentum)\n",
  927. "## Choose CrossEntropyLoss as Loss\n",
  928. "criterion = nn.CrossEntropyLoss()"
  929. ]
  930. },
  931. {
  932. "cell_type": "markdown",
  933. "metadata": {},
  934. "source": [
  935. "## Anzeige von 4 Ohren des gewählten Datensatzes mit jeweiligem Label"
  936. ]
  937. },
  938. {
  939. "cell_type": "code",
  940. "execution_count": 17,
  941. "metadata": {},
  942. "outputs": [
  943. {
  944. "data": {
  945. "image/png": "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\n",
  946. "text/plain": [
  947. "<Figure size 432x288 with 1 Axes>"
  948. ]
  949. },
  950. "metadata": {
  951. "needs_background": "light"
  952. },
  953. "output_type": "display_data"
  954. },
  955. {
  956. "name": "stdout",
  957. "output_type": "stream",
  958. "text": [
  959. " 014 009 011 004\n"
  960. ]
  961. }
  962. ],
  963. "source": [
  964. "## Get random images from Trainloader\n",
  965. "dataiter = iter(train_loader)\n",
  966. "images, labels = dataiter.next()\n",
  967. "\n",
  968. "## show images\n",
  969. "imshow(torchvision.utils.make_grid(images))\n",
  970. "## print labels\n",
  971. "print(' '.join('%5s' % CATEGORIES[labels[j]] for j in range(4)))"
  972. ]
  973. },
  974. {
  975. "cell_type": "markdown",
  976. "metadata": {},
  977. "source": [
  978. "## Durchführung des Trainings"
  979. ]
  980. },
  981. {
  982. "cell_type": "code",
  983. "execution_count": 18,
  984. "metadata": {},
  985. "outputs": [
  986. {
  987. "name": "stdout",
  988. "output_type": "stream",
  989. "text": [
  990. "Start Training um: 21:22:52\n",
  991. "\n",
  992. "Epoch 1:\n",
  993. "[1, 2]: loss: 9.865, \t Running_Correct: 0.000\n",
  994. "[1, 4]: loss: 7.968, \t Running_Correct: 0.000\n",
  995. "[1, 6]: loss: 5.690, \t Running_Correct: 0.000\n",
  996. "[1, 8]: loss: 5.712, \t Running_Correct: 0.000\n",
  997. "[1, 10]: loss: 5.761, \t Running_Correct: 0.000\n",
  998. "[1, 12]: loss: 4.737, \t Running_Correct: 0.000\n",
  999. "[1, 14]: loss: 3.476, \t Running_Correct: 0.500\n",
  1000. "[1, 16]: loss: 5.120, \t Running_Correct: 0.000\n",
  1001. "[1, 18]: loss: 5.714, \t Running_Correct: 0.500\n",
  1002. "[1, 20]: loss: 4.876, \t Running_Correct: 0.000\n",
  1003. "[1, 22]: loss: 3.751, \t Running_Correct: 0.000\n",
  1004. "[1, 24]: loss: 4.292, \t Running_Correct: 1.500\n",
  1005. "\n",
  1006. "Epoch 2:\n",
  1007. "[2, 2]: loss: 4.078, \t Running_Correct: 0.500\n",
  1008. "[2, 4]: loss: 2.458, \t Running_Correct: 1.500\n",
  1009. "[2, 6]: loss: 2.992, \t Running_Correct: 1.500\n",
  1010. "[2, 8]: loss: 2.615, \t Running_Correct: 0.500\n",
  1011. "[2, 10]: loss: 3.510, \t Running_Correct: 1.500\n",
  1012. "[2, 12]: loss: 4.087, \t Running_Correct: 0.000\n",
  1013. "[2, 14]: loss: 2.451, \t Running_Correct: 1.500\n",
  1014. "[2, 16]: loss: 3.023, \t Running_Correct: 0.500\n",
  1015. "[2, 18]: loss: 2.056, \t Running_Correct: 2.000\n",
  1016. "[2, 20]: loss: 3.019, \t Running_Correct: 0.000\n",
  1017. "[2, 22]: loss: 2.386, \t Running_Correct: 1.000\n",
  1018. "[2, 24]: loss: 2.218, \t Running_Correct: 1.000\n",
  1019. "\n",
  1020. "Epoch 3:\n",
  1021. "[3, 2]: loss: 2.589, \t Running_Correct: 1.000\n",
  1022. "[3, 4]: loss: 2.130, \t Running_Correct: 1.500\n",
  1023. "[3, 6]: loss: 1.970, \t Running_Correct: 1.500\n",
  1024. "[3, 8]: loss: 1.701, \t Running_Correct: 1.000\n",
  1025. "[3, 10]: loss: 2.226, \t Running_Correct: 1.500\n",
  1026. "[3, 12]: loss: 2.392, \t Running_Correct: 1.500\n",
  1027. "[3, 14]: loss: 1.832, \t Running_Correct: 1.000\n",
  1028. "[3, 16]: loss: 1.451, \t Running_Correct: 2.000\n",
  1029. "[3, 18]: loss: 1.218, \t Running_Correct: 1.500\n",
  1030. "[3, 20]: loss: 1.221, \t Running_Correct: 2.500\n",
  1031. "[3, 22]: loss: 1.429, \t Running_Correct: 2.500\n",
  1032. "[3, 24]: loss: 1.765, \t Running_Correct: 1.500\n",
  1033. "\n",
  1034. "Epoch 4:\n",
  1035. "[4, 2]: loss: 0.289, \t Running_Correct: 4.000\n",
  1036. "[4, 4]: loss: 0.272, \t Running_Correct: 3.500\n",
  1037. "[4, 6]: loss: 0.624, \t Running_Correct: 3.000\n",
  1038. "[4, 8]: loss: 0.885, \t Running_Correct: 3.000\n",
  1039. "[4, 10]: loss: 0.775, \t Running_Correct: 2.500\n",
  1040. "[4, 12]: loss: 1.037, \t Running_Correct: 2.500\n",
  1041. "[4, 14]: loss: 1.357, \t Running_Correct: 2.500\n",
  1042. "[4, 16]: loss: 0.908, \t Running_Correct: 2.500\n",
  1043. "[4, 18]: loss: 0.882, \t Running_Correct: 3.000\n",
  1044. "[4, 20]: loss: 0.604, \t Running_Correct: 3.500\n",
  1045. "[4, 22]: loss: 0.439, \t Running_Correct: 3.500\n",
  1046. "[4, 24]: loss: 0.416, \t Running_Correct: 4.000\n",
  1047. "\n",
  1048. "Epoch 5:\n",
  1049. "[5, 2]: loss: 0.538, \t Running_Correct: 3.500\n",
  1050. "[5, 4]: loss: 0.313, \t Running_Correct: 3.500\n",
  1051. "[5, 6]: loss: 0.286, \t Running_Correct: 4.000\n",
  1052. "[5, 8]: loss: 0.367, \t Running_Correct: 3.500\n",
  1053. "[5, 10]: loss: 0.350, \t Running_Correct: 3.500\n",
  1054. "[5, 12]: loss: 0.999, \t Running_Correct: 2.500\n",
  1055. "[5, 14]: loss: 0.664, \t Running_Correct: 3.000\n",
  1056. "[5, 16]: loss: 0.100, \t Running_Correct: 4.000\n",
  1057. "[5, 18]: loss: 0.754, \t Running_Correct: 3.000\n",
  1058. "[5, 20]: loss: 0.759, \t Running_Correct: 3.000\n",
  1059. "[5, 22]: loss: 0.711, \t Running_Correct: 2.000\n",
  1060. "[5, 24]: loss: 0.471, \t Running_Correct: 4.000\n",
  1061. "\n",
  1062. "Epoch 6:\n",
  1063. "[6, 2]: loss: 0.281, \t Running_Correct: 4.000\n",
  1064. "[6, 4]: loss: 0.529, \t Running_Correct: 3.500\n",
  1065. "[6, 6]: loss: 0.416, \t Running_Correct: 3.500\n",
  1066. "[6, 8]: loss: 0.218, \t Running_Correct: 3.500\n",
  1067. "[6, 10]: loss: 0.917, \t Running_Correct: 3.500\n",
  1068. "[6, 12]: loss: 1.952, \t Running_Correct: 2.500\n",
  1069. "[6, 14]: loss: 0.185, \t Running_Correct: 4.000\n",
  1070. "[6, 16]: loss: 0.771, \t Running_Correct: 3.000\n",
  1071. "[6, 18]: loss: 0.558, \t Running_Correct: 3.500\n",
  1072. "[6, 20]: loss: 0.315, \t Running_Correct: 3.500\n",
  1073. "[6, 22]: loss: 0.167, \t Running_Correct: 4.000\n",
  1074. "[6, 24]: loss: 0.531, \t Running_Correct: 3.500\n",
  1075. "\n",
  1076. "Epoch 7:\n",
  1077. "[7, 2]: loss: 0.215, \t Running_Correct: 4.000\n",
  1078. "[7, 4]: loss: 0.131, \t Running_Correct: 4.000\n",
  1079. "[7, 6]: loss: 0.250, \t Running_Correct: 3.500\n",
  1080. "[7, 8]: loss: 0.140, \t Running_Correct: 4.000\n",
  1081. "[7, 10]: loss: 0.141, \t Running_Correct: 4.000\n",
  1082. "[7, 12]: loss: 0.274, \t Running_Correct: 3.500\n",
  1083. "[7, 14]: loss: 0.018, \t Running_Correct: 4.000\n",
  1084. "[7, 16]: loss: 0.213, \t Running_Correct: 3.500\n",
  1085. "[7, 18]: loss: 0.039, \t Running_Correct: 4.000\n",
  1086. "[7, 20]: loss: 0.145, \t Running_Correct: 4.000\n",
  1087. "[7, 22]: loss: 0.024, \t Running_Correct: 4.000\n",
  1088. "[7, 24]: loss: 0.013, \t Running_Correct: 4.000\n",
  1089. "\n",
  1090. "Epoch 8:\n",
  1091. "[8, 2]: loss: 0.029, \t Running_Correct: 4.000\n",
  1092. "[8, 4]: loss: 0.537, \t Running_Correct: 3.500\n",
  1093. "[8, 6]: loss: 0.206, \t Running_Correct: 3.500\n",
  1094. "[8, 8]: loss: 0.108, \t Running_Correct: 4.000\n",
  1095. "[8, 10]: loss: 0.076, \t Running_Correct: 4.000\n",
  1096. "[8, 12]: loss: 0.019, \t Running_Correct: 4.000\n",
  1097. "[8, 14]: loss: 0.848, \t Running_Correct: 3.000\n",
  1098. "[8, 16]: loss: 1.830, \t Running_Correct: 2.500\n",
  1099. "[8, 18]: loss: 1.012, \t Running_Correct: 3.500\n",
  1100. "[8, 20]: loss: 0.529, \t Running_Correct: 3.500\n",
  1101. "[8, 22]: loss: 1.194, \t Running_Correct: 2.500\n",
  1102. "[8, 24]: loss: 0.835, \t Running_Correct: 3.500\n",
  1103. "\n",
  1104. "Epoch 9:\n",
  1105. "[9, 2]: loss: 0.199, \t Running_Correct: 4.000\n",
  1106. "[9, 4]: loss: 0.114, \t Running_Correct: 4.000\n",
  1107. "[9, 6]: loss: 0.208, \t Running_Correct: 3.500\n",
  1108. "[9, 8]: loss: 0.101, \t Running_Correct: 4.000\n",
  1109. "[9, 10]: loss: 0.197, \t Running_Correct: 3.500\n",
  1110. "[9, 12]: loss: 0.178, \t Running_Correct: 4.000\n",
  1111. "[9, 14]: loss: 0.021, \t Running_Correct: 4.000\n",
  1112. "[9, 16]: loss: 0.116, \t Running_Correct: 4.000\n",
  1113. "[9, 18]: loss: 0.101, \t Running_Correct: 4.000\n",
  1114. "[9, 20]: loss: 0.032, \t Running_Correct: 4.000\n",
  1115. "[9, 22]: loss: 0.170, \t Running_Correct: 3.500\n",
  1116. "[9, 24]: loss: 0.245, \t Running_Correct: 3.500\n",
  1117. "\n",
  1118. "Epoch 10:\n",
  1119. "[10, 2]: loss: 0.029, \t Running_Correct: 4.000\n",
  1120. "[10, 4]: loss: 0.011, \t Running_Correct: 4.000\n",
  1121. "[10, 6]: loss: 0.048, \t Running_Correct: 4.000\n",
  1122. "[10, 8]: loss: 0.010, \t Running_Correct: 4.000\n",
  1123. "[10, 10]: loss: 0.018, \t Running_Correct: 4.000\n",
  1124. "[10, 12]: loss: 0.001, \t Running_Correct: 4.000\n",
  1125. "[10, 14]: loss: 0.042, \t Running_Correct: 4.000\n",
  1126. "[10, 16]: loss: 0.033, \t Running_Correct: 4.000\n",
  1127. "[10, 18]: loss: 0.009, \t Running_Correct: 4.000\n",
  1128. "[10, 20]: loss: 0.001, \t Running_Correct: 4.000\n",
  1129. "[10, 22]: loss: 0.009, \t Running_Correct: 4.000\n",
  1130. "[10, 24]: loss: 0.002, \t Running_Correct: 4.000\n",
  1131. "\n",
  1132. "Epoch 11:\n",
  1133. "[11, 2]: loss: 0.007, \t Running_Correct: 4.000\n",
  1134. "[11, 4]: loss: 0.019, \t Running_Correct: 4.000\n",
  1135. "[11, 6]: loss: 0.004, \t Running_Correct: 4.000\n",
  1136. "[11, 8]: loss: 0.011, \t Running_Correct: 4.000\n",
  1137. "[11, 10]: loss: 0.003, \t Running_Correct: 4.000\n",
  1138. "[11, 12]: loss: 0.004, \t Running_Correct: 4.000\n",
  1139. "[11, 14]: loss: 0.002, \t Running_Correct: 4.000\n",
  1140. "[11, 16]: loss: 0.006, \t Running_Correct: 4.000\n",
  1141. "[11, 18]: loss: 0.032, \t Running_Correct: 4.000\n",
  1142. "[11, 20]: loss: 0.055, \t Running_Correct: 4.000\n",
  1143. "[11, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1144. "[11, 24]: loss: 0.016, \t Running_Correct: 4.000\n",
  1145. "\n",
  1146. "Epoch 12:\n",
  1147. "[12, 2]: loss: 0.002, \t Running_Correct: 4.000\n",
  1148. "[12, 4]: loss: 0.041, \t Running_Correct: 4.000\n",
  1149. "[12, 6]: loss: 0.001, \t Running_Correct: 4.000\n",
  1150. "[12, 8]: loss: 0.008, \t Running_Correct: 4.000\n",
  1151. "[12, 10]: loss: 0.002, \t Running_Correct: 4.000\n",
  1152. "[12, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1153. "[12, 14]: loss: 0.002, \t Running_Correct: 4.000\n",
  1154. "[12, 16]: loss: 0.004, \t Running_Correct: 4.000\n",
  1155. "[12, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1156. "[12, 20]: loss: 0.005, \t Running_Correct: 4.000\n",
  1157. "[12, 22]: loss: 0.001, \t Running_Correct: 4.000\n",
  1158. "[12, 24]: loss: 0.002, \t Running_Correct: 4.000\n",
  1159. "\n",
  1160. "Epoch 13:\n",
  1161. "[13, 2]: loss: 0.001, \t Running_Correct: 4.000\n",
  1162. "[13, 4]: loss: 0.002, \t Running_Correct: 4.000\n",
  1163. "[13, 6]: loss: 0.001, \t Running_Correct: 4.000\n",
  1164. "[13, 8]: loss: 0.001, \t Running_Correct: 4.000\n",
  1165. "[13, 10]: loss: 0.010, \t Running_Correct: 4.000\n",
  1166. "[13, 12]: loss: 0.003, \t Running_Correct: 4.000\n",
  1167. "[13, 14]: loss: 0.006, \t Running_Correct: 4.000\n",
  1168. "[13, 16]: loss: 0.001, \t Running_Correct: 4.000\n",
  1169. "[13, 18]: loss: 0.007, \t Running_Correct: 4.000\n",
  1170. "[13, 20]: loss: 0.002, \t Running_Correct: 4.000\n",
  1171. "[13, 22]: loss: 0.002, \t Running_Correct: 4.000\n",
  1172. "[13, 24]: loss: 0.008, \t Running_Correct: 4.000\n",
  1173. "\n",
  1174. "Epoch 14:\n",
  1175. "[14, 2]: loss: 0.008, \t Running_Correct: 4.000\n",
  1176. "[14, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1177. "[14, 6]: loss: 0.009, \t Running_Correct: 4.000\n",
  1178. "[14, 8]: loss: 0.001, \t Running_Correct: 4.000\n",
  1179. "[14, 10]: loss: 0.001, \t Running_Correct: 4.000\n",
  1180. "[14, 12]: loss: 0.001, \t Running_Correct: 4.000\n",
  1181. "[14, 14]: loss: 0.013, \t Running_Correct: 4.000\n",
  1182. "[14, 16]: loss: 0.003, \t Running_Correct: 4.000\n",
  1183. "[14, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1184. "[14, 20]: loss: 0.003, \t Running_Correct: 4.000\n",
  1185. "[14, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1186. "[14, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1187. "\n",
  1188. "Epoch 15:\n",
  1189. "[15, 2]: loss: 0.001, \t Running_Correct: 4.000\n",
  1190. "[15, 4]: loss: 0.001, \t Running_Correct: 4.000\n",
  1191. "[15, 6]: loss: 0.003, \t Running_Correct: 4.000\n",
  1192. "[15, 8]: loss: 0.001, \t Running_Correct: 4.000\n",
  1193. "[15, 10]: loss: 0.001, \t Running_Correct: 4.000\n",
  1194. "[15, 12]: loss: 0.002, \t Running_Correct: 4.000\n",
  1195. "[15, 14]: loss: 0.001, \t Running_Correct: 4.000\n",
  1196. "[15, 16]: loss: 0.001, \t Running_Correct: 4.000\n",
  1197. "[15, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1198. "[15, 20]: loss: 0.001, \t Running_Correct: 4.000\n",
  1199. "[15, 22]: loss: 0.004, \t Running_Correct: 4.000\n",
  1200. "[15, 24]: loss: 0.001, \t Running_Correct: 4.000\n",
  1201. "\n",
  1202. "Epoch 16:\n",
  1203. "[16, 2]: loss: 0.001, \t Running_Correct: 4.000\n",
  1204. "[16, 4]: loss: 0.001, \t Running_Correct: 4.000\n",
  1205. "[16, 6]: loss: 0.004, \t Running_Correct: 4.000\n",
  1206. "[16, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1207. "[16, 10]: loss: 0.001, \t Running_Correct: 4.000\n",
  1208. "[16, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1209. "[16, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1210. "[16, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1211. "[16, 18]: loss: 0.001, \t Running_Correct: 4.000\n",
  1212. "[16, 20]: loss: 0.005, \t Running_Correct: 4.000\n",
  1213. "[16, 22]: loss: 0.001, \t Running_Correct: 4.000\n",
  1214. "[16, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1215. "\n",
  1216. "Epoch 17:\n",
  1217. "[17, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1218. "[17, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1219. "[17, 6]: loss: 0.001, \t Running_Correct: 4.000\n",
  1220. "[17, 8]: loss: 0.001, \t Running_Correct: 4.000\n",
  1221. "[17, 10]: loss: 0.001, \t Running_Correct: 4.000\n",
  1222. "[17, 12]: loss: 0.002, \t Running_Correct: 4.000\n",
  1223. "[17, 14]: loss: 0.001, \t Running_Correct: 4.000\n",
  1224. "[17, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1225. "[17, 18]: loss: 0.001, \t Running_Correct: 4.000\n",
  1226. "[17, 20]: loss: 0.001, \t Running_Correct: 4.000\n",
  1227. "[17, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1228. "[17, 24]: loss: 0.001, \t Running_Correct: 4.000\n",
  1229. "\n",
  1230. "Epoch 18:\n",
  1231. "[18, 2]: loss: 0.001, \t Running_Correct: 4.000\n",
  1232. "[18, 4]: loss: 0.001, \t Running_Correct: 4.000\n",
  1233. "[18, 6]: loss: 0.001, \t Running_Correct: 4.000\n",
  1234. "[18, 8]: loss: 0.002, \t Running_Correct: 4.000\n",
  1235. "[18, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1236. "[18, 12]: loss: 0.003, \t Running_Correct: 4.000\n",
  1237. "[18, 14]: loss: 0.001, \t Running_Correct: 4.000\n",
  1238. "[18, 16]: loss: 0.001, \t Running_Correct: 4.000\n",
  1239. "[18, 18]: loss: 0.002, \t Running_Correct: 4.000\n",
  1240. "[18, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1241. "[18, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1242. "[18, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1243. "\n",
  1244. "Epoch 19:\n",
  1245. "[19, 2]: loss: 0.001, \t Running_Correct: 4.000\n",
  1246. "[19, 4]: loss: 0.001, \t Running_Correct: 4.000\n",
  1247. "[19, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1248. "[19, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1249. "[19, 10]: loss: 0.003, \t Running_Correct: 4.000\n",
  1250. "[19, 12]: loss: 0.002, \t Running_Correct: 4.000\n",
  1251. "[19, 14]: loss: 0.001, \t Running_Correct: 4.000\n",
  1252. "[19, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1253. "[19, 18]: loss: 0.001, \t Running_Correct: 4.000\n",
  1254. "[19, 20]: loss: 0.004, \t Running_Correct: 4.000\n",
  1255. "[19, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1256. "[19, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1257. "\n",
  1258. "Epoch 20:\n",
  1259. "[20, 2]: loss: 0.001, \t Running_Correct: 4.000\n",
  1260. "[20, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1261. "[20, 6]: loss: 0.001, \t Running_Correct: 4.000\n",
  1262. "[20, 8]: loss: 0.001, \t Running_Correct: 4.000\n",
  1263. "[20, 10]: loss: 0.001, \t Running_Correct: 4.000\n",
  1264. "[20, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1265. "[20, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1266. "[20, 16]: loss: 0.001, \t Running_Correct: 4.000\n",
  1267. "[20, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1268. "[20, 20]: loss: 0.006, \t Running_Correct: 4.000\n",
  1269. "[20, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1270. "[20, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1271. "\n",
  1272. "Epoch 21:\n",
  1273. "[21, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1274. "[21, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1275. "[21, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1276. "[21, 8]: loss: 0.006, \t Running_Correct: 4.000\n",
  1277. "[21, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1278. "[21, 12]: loss: 0.001, \t Running_Correct: 4.000\n",
  1279. "[21, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1280. "[21, 16]: loss: 0.001, \t Running_Correct: 4.000\n",
  1281. "[21, 18]: loss: 0.001, \t Running_Correct: 4.000\n",
  1282. "[21, 20]: loss: 0.003, \t Running_Correct: 4.000\n",
  1283. "[21, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1284. "[21, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1285. "\n",
  1286. "Epoch 22:\n",
  1287. "[22, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1288. "[22, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1289. "[22, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1290. "[22, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1291. "[22, 10]: loss: 0.001, \t Running_Correct: 4.000\n",
  1292. "[22, 12]: loss: 0.001, \t Running_Correct: 4.000\n",
  1293. "[22, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1294. "[22, 16]: loss: 0.001, \t Running_Correct: 4.000\n",
  1295. "[22, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1296. "[22, 20]: loss: 0.007, \t Running_Correct: 4.000\n",
  1297. "[22, 22]: loss: 0.003, \t Running_Correct: 4.000\n",
  1298. "[22, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1299. "\n",
  1300. "Epoch 23:\n",
  1301. "[23, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1302. "[23, 4]: loss: 0.003, \t Running_Correct: 4.000\n",
  1303. "[23, 6]: loss: 0.001, \t Running_Correct: 4.000\n",
  1304. "[23, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1305. "[23, 10]: loss: 0.002, \t Running_Correct: 4.000\n",
  1306. "[23, 12]: loss: 0.002, \t Running_Correct: 4.000\n",
  1307. "[23, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1308. "[23, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1309. "[23, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1310. "[23, 20]: loss: 0.001, \t Running_Correct: 4.000\n",
  1311. "[23, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1312. "[23, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1313. "\n",
  1314. "Epoch 24:\n",
  1315. "[24, 2]: loss: 0.001, \t Running_Correct: 4.000\n",
  1316. "[24, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1317. "[24, 6]: loss: 0.002, \t Running_Correct: 4.000\n",
  1318. "[24, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1319. "[24, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1320. "[24, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1321. "[24, 14]: loss: 0.001, \t Running_Correct: 4.000\n",
  1322. "[24, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1323. "[24, 18]: loss: 0.001, \t Running_Correct: 4.000\n",
  1324. "[24, 20]: loss: 0.001, \t Running_Correct: 4.000\n",
  1325. "[24, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1326. "[24, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1327. "\n",
  1328. "Epoch 25:\n",
  1329. "[25, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1330. "[25, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1331. "[25, 6]: loss: 0.001, \t Running_Correct: 4.000\n",
  1332. "[25, 8]: loss: 0.001, \t Running_Correct: 4.000\n",
  1333. "[25, 10]: loss: 0.003, \t Running_Correct: 4.000\n",
  1334. "[25, 12]: loss: 0.002, \t Running_Correct: 4.000\n",
  1335. "[25, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1336. "[25, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1337. "[25, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1338. "[25, 20]: loss: 0.001, \t Running_Correct: 4.000\n",
  1339. "[25, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1340. "[25, 24]: loss: 0.001, \t Running_Correct: 4.000\n",
  1341. "\n",
  1342. "Epoch 26:\n",
  1343. "[26, 2]: loss: 0.006, \t Running_Correct: 4.000\n",
  1344. "[26, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1345. "[26, 6]: loss: 0.001, \t Running_Correct: 4.000\n",
  1346. "[26, 8]: loss: 0.001, \t Running_Correct: 4.000\n",
  1347. "[26, 10]: loss: 0.001, \t Running_Correct: 4.000\n",
  1348. "[26, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1349. "[26, 14]: loss: 0.001, \t Running_Correct: 4.000\n",
  1350. "[26, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1351. "[26, 18]: loss: 0.001, \t Running_Correct: 4.000\n",
  1352. "[26, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1353. "[26, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1354. "[26, 24]: loss: 0.001, \t Running_Correct: 4.000\n",
  1355. "\n",
  1356. "Epoch 27:\n",
  1357. "[27, 2]: loss: 0.001, \t Running_Correct: 4.000\n",
  1358. "[27, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1359. "[27, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1360. "[27, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1361. "[27, 10]: loss: 0.005, \t Running_Correct: 4.000\n",
  1362. "[27, 12]: loss: 0.001, \t Running_Correct: 4.000\n",
  1363. "[27, 14]: loss: 0.001, \t Running_Correct: 4.000\n",
  1364. "[27, 16]: loss: 0.001, \t Running_Correct: 4.000\n",
  1365. "[27, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1366. "[27, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1367. "[27, 22]: loss: 0.001, \t Running_Correct: 4.000\n",
  1368. "[27, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1369. "\n",
  1370. "Epoch 28:\n",
  1371. "[28, 2]: loss: 0.001, \t Running_Correct: 4.000\n",
  1372. "[28, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1373. "[28, 6]: loss: 0.001, \t Running_Correct: 4.000\n",
  1374. "[28, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1375. "[28, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1376. "[28, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1377. "[28, 14]: loss: 0.005, \t Running_Correct: 4.000\n",
  1378. "[28, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1379. "[28, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1380. "[28, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1381. "[28, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1382. "[28, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1383. "\n",
  1384. "Epoch 29:\n",
  1385. "[29, 2]: loss: 0.001, \t Running_Correct: 4.000\n",
  1386. "[29, 4]: loss: 0.001, \t Running_Correct: 4.000\n",
  1387. "[29, 6]: loss: 0.004, \t Running_Correct: 4.000\n",
  1388. "[29, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1389. "[29, 10]: loss: 0.002, \t Running_Correct: 4.000\n",
  1390. "[29, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1391. "[29, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1392. "[29, 16]: loss: 0.001, \t Running_Correct: 4.000\n",
  1393. "[29, 18]: loss: 0.006, \t Running_Correct: 4.000\n",
  1394. "[29, 20]: loss: 0.001, \t Running_Correct: 4.000\n",
  1395. "[29, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1396. "[29, 24]: loss: 0.001, \t Running_Correct: 4.000\n",
  1397. "\n",
  1398. "Epoch 30:\n",
  1399. "[30, 2]: loss: 0.001, \t Running_Correct: 4.000\n",
  1400. "[30, 4]: loss: 0.001, \t Running_Correct: 4.000\n",
  1401. "[30, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1402. "[30, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1403. "[30, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1404. "[30, 12]: loss: 0.001, \t Running_Correct: 4.000\n",
  1405. "[30, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1406. "[30, 16]: loss: 0.001, \t Running_Correct: 4.000\n",
  1407. "[30, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1408. "[30, 20]: loss: 0.003, \t Running_Correct: 4.000\n",
  1409. "[30, 22]: loss: 0.002, \t Running_Correct: 4.000\n",
  1410. "[30, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1411. "\n",
  1412. "Epoch 31:\n",
  1413. "[31, 2]: loss: 0.001, \t Running_Correct: 4.000\n",
  1414. "[31, 4]: loss: 0.001, \t Running_Correct: 4.000\n",
  1415. "[31, 6]: loss: 0.001, \t Running_Correct: 4.000\n",
  1416. "[31, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1417. "[31, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1418. "[31, 12]: loss: 0.001, \t Running_Correct: 4.000\n",
  1419. "[31, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1420. "[31, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1421. "[31, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1422. "[31, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1423. "[31, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1424. "[31, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1425. "\n",
  1426. "Epoch 32:\n",
  1427. "[32, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1428. "[32, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1429. "[32, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1430. "[32, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1431. "[32, 10]: loss: 0.001, \t Running_Correct: 4.000\n",
  1432. "[32, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1433. "[32, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1434. "[32, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1435. "[32, 18]: loss: 0.001, \t Running_Correct: 4.000\n",
  1436. "[32, 20]: loss: 0.001, \t Running_Correct: 4.000\n",
  1437. "[32, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1438. "[32, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1439. "\n",
  1440. "Epoch 33:\n",
  1441. "[33, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1442. "[33, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1443. "[33, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1444. "[33, 8]: loss: 0.003, \t Running_Correct: 4.000\n",
  1445. "[33, 10]: loss: 0.001, \t Running_Correct: 4.000\n",
  1446. "[33, 12]: loss: 0.001, \t Running_Correct: 4.000\n",
  1447. "[33, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1448. "[33, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1449. "[33, 18]: loss: 0.001, \t Running_Correct: 4.000\n",
  1450. "[33, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1451. "[33, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1452. "[33, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1453. "\n",
  1454. "Epoch 34:\n",
  1455. "[34, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1456. "[34, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1457. "[34, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1458. "[34, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1459. "[34, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1460. "[34, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1461. "[34, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1462. "[34, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1463. "[34, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1464. "[34, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1465. "[34, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1466. "[34, 24]: loss: 0.001, \t Running_Correct: 4.000\n",
  1467. "\n",
  1468. "Epoch 35:\n",
  1469. "[35, 2]: loss: 0.001, \t Running_Correct: 4.000\n",
  1470. "[35, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1471. "[35, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1472. "[35, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1473. "[35, 10]: loss: 0.001, \t Running_Correct: 4.000\n",
  1474. "[35, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1475. "[35, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1476. "[35, 16]: loss: 0.005, \t Running_Correct: 4.000\n",
  1477. "[35, 18]: loss: 0.001, \t Running_Correct: 4.000\n",
  1478. "[35, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1479. "[35, 22]: loss: 0.001, \t Running_Correct: 4.000\n",
  1480. "[35, 24]: loss: 0.019, \t Running_Correct: 4.000\n",
  1481. "\n",
  1482. "Epoch 36:\n",
  1483. "[36, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1484. "[36, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1485. "[36, 6]: loss: 0.001, \t Running_Correct: 4.000\n",
  1486. "[36, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1487. "[36, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1488. "[36, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1489. "[36, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1490. "[36, 16]: loss: 0.003, \t Running_Correct: 4.000\n",
  1491. "[36, 18]: loss: 0.001, \t Running_Correct: 4.000\n",
  1492. "[36, 20]: loss: 0.001, \t Running_Correct: 4.000\n",
  1493. "[36, 22]: loss: 0.002, \t Running_Correct: 4.000\n",
  1494. "[36, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1495. "\n",
  1496. "Epoch 37:\n",
  1497. "[37, 2]: loss: 0.001, \t Running_Correct: 4.000\n",
  1498. "[37, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1499. "[37, 6]: loss: 0.001, \t Running_Correct: 4.000\n",
  1500. "[37, 8]: loss: 0.001, \t Running_Correct: 4.000\n",
  1501. "[37, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1502. "[37, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1503. "[37, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1504. "[37, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1505. "[37, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1506. "[37, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1507. "[37, 22]: loss: 0.004, \t Running_Correct: 4.000\n",
  1508. "[37, 24]: loss: 0.001, \t Running_Correct: 4.000\n",
  1509. "\n",
  1510. "Epoch 38:\n",
  1511. "[38, 2]: loss: 0.001, \t Running_Correct: 4.000\n",
  1512. "[38, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1513. "[38, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1514. "[38, 8]: loss: 0.001, \t Running_Correct: 4.000\n",
  1515. "[38, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1516. "[38, 12]: loss: 0.001, \t Running_Correct: 4.000\n",
  1517. "[38, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1518. "[38, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1519. "[38, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1520. "[38, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1521. "[38, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1522. "[38, 24]: loss: 0.001, \t Running_Correct: 4.000\n",
  1523. "\n",
  1524. "Epoch 39:\n",
  1525. "[39, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1526. "[39, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1527. "[39, 6]: loss: 0.001, \t Running_Correct: 4.000\n",
  1528. "[39, 8]: loss: 0.001, \t Running_Correct: 4.000\n",
  1529. "[39, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1530. "[39, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1531. "[39, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1532. "[39, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1533. "[39, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1534. "[39, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1535. "[39, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1536. "[39, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1537. "\n",
  1538. "Epoch 40:\n",
  1539. "[40, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1540. "[40, 4]: loss: 0.001, \t Running_Correct: 4.000\n",
  1541. "[40, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1542. "[40, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1543. "[40, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1544. "[40, 12]: loss: 0.002, \t Running_Correct: 4.000\n",
  1545. "[40, 14]: loss: 0.001, \t Running_Correct: 4.000\n",
  1546. "[40, 16]: loss: 0.001, \t Running_Correct: 4.000\n",
  1547. "[40, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1548. "[40, 20]: loss: 0.001, \t Running_Correct: 4.000\n",
  1549. "[40, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1550. "[40, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1551. "\n",
  1552. "Epoch 41:\n",
  1553. "[41, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1554. "[41, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1555. "[41, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1556. "[41, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1557. "[41, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1558. "[41, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1559. "[41, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1560. "[41, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1561. "[41, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1562. "[41, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1563. "[41, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1564. "[41, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1565. "\n",
  1566. "Epoch 42:\n",
  1567. "[42, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1568. "[42, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1569. "[42, 6]: loss: 0.001, \t Running_Correct: 4.000\n",
  1570. "[42, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1571. "[42, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1572. "[42, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1573. "[42, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1574. "[42, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1575. "[42, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1576. "[42, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1577. "[42, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1578. "[42, 24]: loss: 0.002, \t Running_Correct: 4.000\n",
  1579. "\n",
  1580. "Epoch 43:\n",
  1581. "[43, 2]: loss: 0.001, \t Running_Correct: 4.000\n",
  1582. "[43, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1583. "[43, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1584. "[43, 8]: loss: 0.002, \t Running_Correct: 4.000\n",
  1585. "[43, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1586. "[43, 12]: loss: 0.001, \t Running_Correct: 4.000\n",
  1587. "[43, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1588. "[43, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1589. "[43, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1590. "[43, 20]: loss: 0.001, \t Running_Correct: 4.000\n",
  1591. "[43, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1592. "[43, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1593. "\n",
  1594. "Epoch 44:\n",
  1595. "[44, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1596. "[44, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1597. "[44, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1598. "[44, 8]: loss: 0.002, \t Running_Correct: 4.000\n",
  1599. "[44, 10]: loss: 0.002, \t Running_Correct: 4.000\n",
  1600. "[44, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1601. "[44, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1602. "[44, 16]: loss: 0.001, \t Running_Correct: 4.000\n",
  1603. "[44, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1604. "[44, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1605. "[44, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1606. "[44, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1607. "\n",
  1608. "Epoch 45:\n",
  1609. "[45, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1610. "[45, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1611. "[45, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1612. "[45, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1613. "[45, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1614. "[45, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1615. "[45, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1616. "[45, 16]: loss: 0.001, \t Running_Correct: 4.000\n",
  1617. "[45, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1618. "[45, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1619. "[45, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1620. "[45, 24]: loss: 0.001, \t Running_Correct: 4.000\n",
  1621. "\n",
  1622. "Epoch 46:\n",
  1623. "[46, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1624. "[46, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1625. "[46, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1626. "[46, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1627. "[46, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1628. "[46, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1629. "[46, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1630. "[46, 16]: loss: 0.001, \t Running_Correct: 4.000\n",
  1631. "[46, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1632. "[46, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1633. "[46, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1634. "[46, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1635. "\n",
  1636. "Epoch 47:\n",
  1637. "[47, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1638. "[47, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1639. "[47, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1640. "[47, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1641. "[47, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1642. "[47, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1643. "[47, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1644. "[47, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1645. "[47, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1646. "[47, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1647. "[47, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1648. "[47, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1649. "\n",
  1650. "Epoch 48:\n",
  1651. "[48, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1652. "[48, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1653. "[48, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1654. "[48, 8]: loss: 0.004, \t Running_Correct: 4.000\n",
  1655. "[48, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1656. "[48, 12]: loss: 0.001, \t Running_Correct: 4.000\n",
  1657. "[48, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1658. "[48, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1659. "[48, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1660. "[48, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1661. "[48, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1662. "[48, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1663. "\n",
  1664. "Epoch 49:\n",
  1665. "[49, 2]: loss: 0.000, \t Running_Correct: 4.000\n",
  1666. "[49, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1667. "[49, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1668. "[49, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1669. "[49, 10]: loss: 0.001, \t Running_Correct: 4.000\n",
  1670. "[49, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1671. "[49, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1672. "[49, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1673. "[49, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1674. "[49, 20]: loss: 0.000, \t Running_Correct: 4.000\n",
  1675. "[49, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1676. "[49, 24]: loss: 0.000, \t Running_Correct: 4.000\n",
  1677. "\n",
  1678. "Epoch 50:\n",
  1679. "[50, 2]: loss: 0.001, \t Running_Correct: 4.000\n",
  1680. "[50, 4]: loss: 0.000, \t Running_Correct: 4.000\n",
  1681. "[50, 6]: loss: 0.000, \t Running_Correct: 4.000\n",
  1682. "[50, 8]: loss: 0.000, \t Running_Correct: 4.000\n",
  1683. "[50, 10]: loss: 0.000, \t Running_Correct: 4.000\n",
  1684. "[50, 12]: loss: 0.000, \t Running_Correct: 4.000\n",
  1685. "[50, 14]: loss: 0.000, \t Running_Correct: 4.000\n",
  1686. "[50, 16]: loss: 0.000, \t Running_Correct: 4.000\n",
  1687. "[50, 18]: loss: 0.000, \t Running_Correct: 4.000\n",
  1688. "[50, 20]: loss: 0.002, \t Running_Correct: 4.000\n",
  1689. "[50, 22]: loss: 0.000, \t Running_Correct: 4.000\n",
  1690. "[50, 24]: loss: 0.001, \t Running_Correct: 4.000\n",
  1691. "Ende Training um: 21:23:57\n",
  1692. "Dauer Training: 01:05 [MM:SS] \n",
  1693. "\n"
  1694. ]
  1695. }
  1696. ],
  1697. "source": [
  1698. "## Number of Epochs for training\n",
  1699. "epoch_range = 50\n",
  1700. "\n",
  1701. "##Start Trainingtime\n",
  1702. "print(\"Start Training um: \", time.strftime(\"%H:%M:%S\"))\n",
  1703. "start_time = time.time()\n",
  1704. "\n",
  1705. "## Variables for Training\n",
  1706. "write_loss_epoch = ''\n",
  1707. "running_correct = 0\n",
  1708. "cancel_train = 0\n",
  1709. "predicted_roc = []\n",
  1710. "\n",
  1711. "## Train Network\n",
  1712. "network.train()\n",
  1713. "for epoch in range(epoch_range): # loop over the dataset multiple times\n",
  1714. " \n",
  1715. " ## Reset for every epoch\n",
  1716. " running_loss = 0.0\n",
  1717. " running_correct = 0\n",
  1718. " print(f'\\nEpoch {epoch+1}:')\n",
  1719. " \n",
  1720. " for i, data in enumerate(train_loader):\n",
  1721. " ## Get the inputs and labels from data; data is a list of [inputs, labels]\n",
  1722. " inputs, labels = data\n",
  1723. " inputs, labels = inputs.to(DEVICE), labels.to(DEVICE)\n",
  1724. "\n",
  1725. " ## Zero the parameter gradients\n",
  1726. " optimizer.zero_grad()\n",
  1727. "\n",
  1728. " ## Calculate outputs\n",
  1729. " network.to(DEVICE)\n",
  1730. " outputs = network(inputs)\n",
  1731. " \n",
  1732. " ## Calculate loss, Backpropagation and Optimize\n",
  1733. " loss = criterion(outputs, labels)\n",
  1734. " loss.backward()\n",
  1735. " optimizer.step()\n",
  1736. "\n",
  1737. " ## Calulate running loss\n",
  1738. " running_loss += loss.item()\n",
  1739. " \n",
  1740. " ## Get predicted value\n",
  1741. " _, predicted = torch.max(outputs.data, 1)\n",
  1742. " \n",
  1743. " running_correct += (predicted == labels).sum().item()\n",
  1744. " mini_batches = round(len(train_loader)/10)\n",
  1745. " \n",
  1746. " if i % mini_batches == (mini_batches-1):\n",
  1747. " print(f'[{epoch + 1}, {i + 1}]: loss: {(running_loss/mini_batches):0.3f}, \\t Running_Correct: {(running_correct/mini_batches):0.3f}')#, \\n\\t\\t Top1-Acc: {top_1.avg}, \\n\\t\\t Top5-Acc: {top_5.avg}')\n",
  1748. " \n",
  1749. " ## Collect losses in Array\n",
  1750. " write_loss_epoch += '['+ str(epoch+1)+ ', ' + str(i+1) + '] \\t loss: ' + str(running_loss/mini_batches) + '\\n'\n",
  1751. " \n",
  1752. " \n",
  1753. " ## Write Training Loss and Training Accuracy log the running loss\n",
  1754. " writer.add_scalar('training loss', running_loss / (mini_batches), epoch * len(train_loader) + i)\n",
  1755. " writer.add_scalar('accuracy', (running_correct / mini_batches/4), epoch * len(train_loader) + i)\n",
  1756. " \n",
  1757. " ## Reset\n",
  1758. " running_loss = 0.0\n",
  1759. " running_correct = 0\n",
  1760. "\n",
  1761. "\n",
  1762. "## Finished Training: Calculate Training Time\n",
  1763. "print(\"Ende Training um: \",time.strftime(\"%H:%M:%S\"))\n",
  1764. "stop_time = time.time()\n",
  1765. "time_dif, time_format = secs_to_HMS(stop_time-start_time)\n",
  1766. "print(\"Dauer Training: \", time_dif, \" \", time_format, \" \\n\")\n",
  1767. "\n",
  1768. "## Acoustic Sound to call attention for finished Training\n",
  1769. "WaitTime_Finished()"
  1770. ]
  1771. },
  1772. {
  1773. "cell_type": "markdown",
  1774. "metadata": {},
  1775. "source": [
  1776. "## Trainiertes Netzwerk speichern"
  1777. ]
  1778. },
  1779. {
  1780. "cell_type": "code",
  1781. "execution_count": 19,
  1782. "metadata": {},
  1783. "outputs": [],
  1784. "source": [
  1785. "## Path for saving trained Network\n",
  1786. "PATH = './Netzwerke/'+ current_time + '_' + Database + '_' + network_name + '_Train' + '.pth'\n",
  1787. "\n",
  1788. "## Save trained Network\n",
  1789. "torch.save({\n",
  1790. " 'epoch_range': epoch_range,\n",
  1791. " 'model_state_dict': network.state_dict(),\n",
  1792. " 'optimizer_state_dict': optimizer.state_dict(),\n",
  1793. " 'running_loss': running_loss,\n",
  1794. " }, PATH)"
  1795. ]
  1796. },
  1797. {
  1798. "cell_type": "code",
  1799. "execution_count": 19,
  1800. "metadata": {},
  1801. "outputs": [],
  1802. "source": [
  1803. "dataiter = iter(train_loader)\n",
  1804. "images, labels = dataiter.next()\n",
  1805. "img_grid = torchvision.utils.make_grid(images)\n",
  1806. "\n",
  1807. "# write to tensorboard\n",
  1808. "writer.add_image((current_time + '_' + Database + '_' + network_name), img_grid)\n",
  1809. "writer.add_graph(network.cpu(), images)\n",
  1810. "writer.close()"
  1811. ]
  1812. },
  1813. {
  1814. "cell_type": "markdown",
  1815. "metadata": {},
  1816. "source": [
  1817. "## Durchführung Testen"
  1818. ]
  1819. },
  1820. {
  1821. "cell_type": "code",
  1822. "execution_count": 20,
  1823. "metadata": {},
  1824. "outputs": [
  1825. {
  1826. "name": "stdout",
  1827. "output_type": "stream",
  1828. "text": [
  1829. "Dataset: AMI, \tNetzwerk: VGG11\n"
  1830. ]
  1831. },
  1832. {
  1833. "name": "stderr",
  1834. "output_type": "stream",
  1835. "text": [
  1836. "C:\\Users\\wurhofer\\anaconda3\\envs\\Test\\lib\\site-packages\\pytorch_lightning\\utilities\\distributed.py:49: UserWarning: Metric `AveragePrecision` will save all targets and predictions in buffer. For large datasets this may lead to large memory footprint.\n",
  1837. " warnings.warn(*args, **kwargs)\n"
  1838. ]
  1839. },
  1840. {
  1841. "name": "stdout",
  1842. "output_type": "stream",
  1843. "text": [
  1844. "\n",
  1845. "Accuracy of the network on the 40 test images: 92.50 %\n",
  1846. "Acc_PyLig of the network on the 40 test images: 92.50 %\n",
  1847. "F1 of the network on the 40 test images: 92.50 \n",
  1848. "F1_PyLig of the network on the 40 test images: 92.5\n",
  1849. "AUC_PyLig: of the network on the 40 test images: 96.05\n",
  1850. "Top1 of the network on the 40 test images: 92.50 %\n",
  1851. "Top5 of the network on the 40 test images: 100.00 %\n",
  1852. "\n",
  1853. "Overview: Accuracy of each class:\n",
  1854. "Accuracy of 000 : 0 %\n",
  1855. "Accuracy of 001 : 100 %\n",
  1856. "Accuracy of 002 : 100 %\n",
  1857. "Accuracy of 003 : 100 %\n",
  1858. "Accuracy of 004 : 100 %\n",
  1859. "Accuracy of 005 : 100 %\n",
  1860. "Accuracy of 007 : 100 %\n",
  1861. "Accuracy of 008 : 100 %\n",
  1862. "Accuracy of 009 : 100 %\n",
  1863. "Accuracy of 010 : 100 %\n",
  1864. "Accuracy of 011 : 100 %\n",
  1865. "Accuracy of 012 : 100 %\n",
  1866. "Accuracy of 013 : 100 %\n",
  1867. "Accuracy of 014 : 0 %\n",
  1868. "Accuracy of 018 : 100 %\n",
  1869. "Accuracy of 019 : 50 %\n",
  1870. "Accuracy of 020 : 50 %\n",
  1871. "Accuracy of 026 : 100 %\n",
  1872. "Accuracy of 027 : 100 %\n",
  1873. "Accuracy of 028 : 100 %\n"
  1874. ]
  1875. }
  1876. ],
  1877. "source": [
  1878. "## Define global Varibales\n",
  1879. "correct = 0\n",
  1880. "total = 0\n",
  1881. "running_loss_test = 0\n",
  1882. "class_correct = list(0. for i in range(len(CATEGORIES)))\n",
  1883. "class_total = list(0. for i in range(len(CATEGORIES)))\n",
  1884. "acc_single_categorie = ''\n",
  1885. "class_probs = []\n",
  1886. "class_preds = []\n",
  1887. "pred_all = torch.tensor([], dtype=int)\n",
  1888. "labels_all = torch.tensor([], dtype=int)\n",
  1889. "top_1 = AvgrageMeter()\n",
  1890. "top_5 = AvgrageMeter()\n",
  1891. "precision_sum = 0\n",
  1892. "recall_sum = 0\n",
  1893. "f1_sum = 0\n",
  1894. "top1_sum = 0\n",
  1895. "top5_sum = 0\n",
  1896. "it = 0\n",
  1897. "len_classes = len(CATEGORIES)\n",
  1898. "\n",
  1899. "## Test Network\n",
  1900. "network.eval()\n",
  1901. "with torch.no_grad():\n",
  1902. " print(f'Dataset: {Database}, \\tNetzwerk: {network_name}')\n",
  1903. " \n",
  1904. " for i, data in enumerate(test_loader, 0):\n",
  1905. " \n",
  1906. " it += 1\n",
  1907. " ## Load images from Test-Loader and hand over to DEVICE\n",
  1908. " images, labels = data\n",
  1909. " images, labels = images.to(DEVICE), labels.to(DEVICE)\n",
  1910. " \n",
  1911. " ## Calculate the predicted outputs\n",
  1912. " network.to(DEVICE)\n",
  1913. " outputs = network(images)\n",
  1914. " class_probs_batch = [F.softmax(el, dim=0) for el in outputs]\n",
  1915. " \n",
  1916. " ## Calculate the Test-Loss\n",
  1917. " loss = criterion(outputs, labels)\n",
  1918. " running_loss_test += loss.item()\n",
  1919. " \n",
  1920. " ## Get predicted values\n",
  1921. " _, predicted = torch.max(outputs.data, 1)\n",
  1922. " \n",
  1923. " ## Calculate the Total and Correct Test-Results\n",
  1924. " total += labels.size(0)\n",
  1925. " correct += (predicted == labels).sum().item()\n",
  1926. " c = (predicted == labels).squeeze()\n",
  1927. " \n",
  1928. " \n",
  1929. " ## Create a Tensor-Array with all Predicted-Values\n",
  1930. " pred_all = torch.cat([pred_all, predicted.cpu()])\n",
  1931. " ## Create a Tensor with all Label-Values\n",
  1932. " labels_all = torch.cat([labels_all, labels.cpu()])\n",
  1933. " \n",
  1934. " ## Create a Tensor-Array with all Predicted-Values for Tensorboard\n",
  1935. " class_probs.append(class_probs_batch)\n",
  1936. " class_preds.append(predicted) \n",
  1937. " test_probs = torch.cat([torch.stack(batch) for batch in class_probs])\n",
  1938. " test_preds = torch.cat(class_preds)\n",
  1939. " \n",
  1940. " \n",
  1941. " ## Calculate and update the Top-1 and Top-5 Accuracy\n",
  1942. " prec1, prec5 = torch_utils.accuracy(output=outputs, target=labels, top_k=(1, 5))\n",
  1943. " top_1.update(prec1.data, inputs.size(0))\n",
  1944. " top_5.update(prec5.data, inputs.size(0))\n",
  1945. "\n",
  1946. " \n",
  1947. " ## Calculate F1-Score without OneHot \n",
  1948. " f1_score_t = F1(num_classes=len_classes, average='micro')\n",
  1949. " f1_score = f1_score_t(predicted.cpu(), labels.cpu())\n",
  1950. " f1_sum += f1_score \n",
  1951. " \n",
  1952. " \n",
  1953. " for i in range(3):\n",
  1954. " label = labels[i]\n",
  1955. " class_correct[label] += c[i].item()\n",
  1956. " class_total[label] += 1\n",
  1957. "\n",
  1958. " \n",
  1959. " ## Write Test-Accuracy and Test-Loss to Tensorboard\n",
  1960. " writer.add_scalar('Test Accuracy',\n",
  1961. " 100 * correct / total,\n",
  1962. " len(test_loader)+i)\n",
  1963. " writer.add_scalar('Test Loss',\n",
  1964. " running_loss_test,\n",
  1965. " len(test_loader) + i)\n",
  1966. "\n",
  1967. " \n",
  1968. " \n",
  1969. " \n",
  1970. "## Calculate the Test-Acuracy with all Predicted-Values and Labels\n",
  1971. "accuracy = Accuracy()\n",
  1972. "acc_all_b = accuracy(pred_all, labels_all)\n",
  1973. "acc_all = acc_all_b * 100\n",
  1974. "\n",
  1975. "## Calculate the F1-Score\n",
  1976. "## with PyTorch-Lightning\n",
  1977. "f1_score_t = F1(num_classes=len_classes, average='micro')\n",
  1978. "f1_score = f1_score_t(pred_all.cpu(), labels_all.cpu())\n",
  1979. "f1_score_all = 100 * f1_score\n",
  1980. "\n",
  1981. "\n",
  1982. "## OneHot Function for all Predicted-Values\n",
  1983. "preds_onehot = (F.one_hot(pred_all)).float()\n",
  1984. "\n",
  1985. "\n",
  1986. "## Calculate the Mean-Value of the Precision\n",
  1987. "## with PyTorch-Lightning\n",
  1988. "average_precision = AveragePrecision(num_classes=len_classes)\n",
  1989. "prec_avg = average_precision(preds_onehot, labels_all)\n",
  1990. "prec_mean_t = torch.mean(torch.stack(prec_avg))\n",
  1991. "prec_mean = 100 * prec_mean_t\n",
  1992. "\n",
  1993. "## Calculate the AUC-Value\n",
  1994. "## with PyTorch-Lightning\n",
  1995. "auroc = multiclass_auroc(pred=preds_onehot, target=labels_all, num_classes=len_classes)\n",
  1996. "auroc_1 = 100 * auroc\n",
  1997. "\n",
  1998. "\n",
  1999. "# Calculate finale Values without OneHot\n",
  2000. "acc = 100 * correct / total\n",
  2001. "f1_f = 100 * f1_sum /it\n",
  2002. "top_1_f = float((top_1.avg).cpu().numpy())\n",
  2003. "top_5_f = float((top_5.avg).cpu().numpy())\n",
  2004. "acc = 100 * correct / total\n",
  2005. "\n",
  2006. "\n",
  2007. "print(f\"\\nAccuracy of the network on the {len(dataset_test)} test images: {acc:.2f} %\")\n",
  2008. "print(f'Acc_PyLig of the network on the {len(dataset_test)} test images: {acc_all:.2f} %')\n",
  2009. "print(f\"F1 of the network on the {len(dataset_test)} test images: {f1_f:.2f} \")\n",
  2010. "print(f'F1_PyLig of the network on the {len(dataset_test)} test images: {f1_score_all}')\n",
  2011. "print(f'AUC_PyLig: of the network on the {len(dataset_test)} test images: {auroc_1:.2f}')\n",
  2012. "print(f\"Top1 of the network on the {len(dataset_test)} test images: {top_1_f:.2f} %\")\n",
  2013. "print(f\"Top5 of the network on the {len(dataset_test)} test images: {top_5_f:.2f} %\")\n",
  2014. "\n",
  2015. "\n",
  2016. "## Overview: Accaurcy of every Categorie\n",
  2017. "print(f\"\\nOverview: Accuracy of each class:\")\n",
  2018. "for i in range(len(CATEGORIES)):\n",
  2019. " if(class_total[i]==0):\n",
  2020. " class_total[i] = 0.1\n",
  2021. " print('Accuracy of %5s : %2d %%' % (CATEGORIES[i], 100 * class_correct[i] / class_total[i]))\n",
  2022. " acc_single_categorie = 'Accuracy of\\t'+ CATEGORIES[i] + ':\\t\\t' + str(100 * class_correct[i] / class_total[i]) + '%\\n'\n",
  2023. " Write_Each_Categorie_Acc_To_Editor(Database, network_name, acc_single_categorie)\n",
  2024. " \n",
  2025. "WaitTime_Finished()"
  2026. ]
  2027. },
  2028. {
  2029. "cell_type": "markdown",
  2030. "metadata": {},
  2031. "source": [
  2032. "## Funktion und Ausführung um weitere Daten und Parameter in Log-File zu schreiben"
  2033. ]
  2034. },
  2035. {
  2036. "cell_type": "code",
  2037. "execution_count": 26,
  2038. "metadata": {},
  2039. "outputs": [
  2040. {
  2041. "name": "stdout",
  2042. "output_type": "stream",
  2043. "text": [
  2044. "./Log_Files/AMI/2021_02_27-17_31_53_AlexNet.txt\n"
  2045. ]
  2046. }
  2047. ],
  2048. "source": [
  2049. "## Write to Log-Files (TXT-File) ##\n",
  2050. "def Write_Training_Loss_To_Editor(database, net, train_num, test_num, accuracy, loss_epoch):\n",
  2051. " logfile_path = './Log_Files/' + database + '/' + str(current_time) + '_' + net + '.txt'\n",
  2052. " #logfile_path = './Log_Files/Test.txt'\n",
  2053. " print(logfile_path)\n",
  2054. "\n",
  2055. " datei = open(logfile_path, 'a')\n",
  2056. " datei.write(\"Datensatz: \")\n",
  2057. " datei.write(Database + \"\\n\\n\")\n",
  2058. " datei.write(\"Netzwerk: \" + net + \"\\n\\n\")\n",
  2059. " datei.write(\"Anzahl der Trainingsdatensaetze: \\t\" + str(train_num) + \"\\n\")\n",
  2060. " datei.write(\"Anzahl der Testdatensaetze: \\t\\t\" + str(test_num) + \"\\n\\n\")\n",
  2061. " datei.write(\"Accuracy des \" + net + \"-Netzwerks \" + \"bei \" + str(test_num) + \" Testbilder: \" + str(accuracy) + \"%\\n\\n\")\n",
  2062. " datei.write(loss_epoch)\n",
  2063. " datei.close()\n",
  2064. "\n",
  2065. "Write_Training_Loss_To_Editor(Database, network_name, len(dataset_train), len(dataset_test), acc, write_loss_epoch)"
  2066. ]
  2067. },
  2068. {
  2069. "cell_type": "markdown",
  2070. "metadata": {},
  2071. "source": [
  2072. "## Funktion um PR-Kurve für jede Kategorie in Tensorboard zu übertragen\n",
  2073. "\n",
  2074. "Hinweis: Diese Funktion kann ausgeführt werden, wird aber in der Arbeit nicht weiter analysiert"
  2075. ]
  2076. },
  2077. {
  2078. "cell_type": "code",
  2079. "execution_count": 28,
  2080. "metadata": {},
  2081. "outputs": [],
  2082. "source": [
  2083. "def add_pr_curve_tensorboard(class_index, test_probs, test_preds, global_step=0):\n",
  2084. " '''\n",
  2085. " Takes in a \"class_index\" from 0 to 9 and plots the corresponding\n",
  2086. " precision-recall curve\n",
  2087. " '''\n",
  2088. " tensorboard_preds = test_preds == class_index\n",
  2089. " tensorboard_probs = test_probs[:, class_index]\n",
  2090. "\n",
  2091. " writer.add_pr_curve(CATEGORIES[class_index],\n",
  2092. " tensorboard_preds,\n",
  2093. " tensorboard_probs,\n",
  2094. " global_step=global_step)\n",
  2095. " writer.close()\n",
  2096. "\n",
  2097. "# plot all the pr curves\n",
  2098. "for i in range(len(CATEGORIES)):\n",
  2099. " add_pr_curve_tensorboard(i, test_probs, test_preds)"
  2100. ]
  2101. },
  2102. {
  2103. "cell_type": "markdown",
  2104. "metadata": {},
  2105. "source": [
  2106. "## Schreiben der Daten ins Logbuch\n",
  2107. "\n",
  2108. "Schreibt alle gesammelten Daten und berechneten Parameter in ein CSV-File\n",
  2109. "\n",
  2110. "* **Write_Data_To_CSV():** \n",
  2111. " Schreibt alle Accuracy-Werte aller genutzten Netzwerke in ein CSV-File\n",
  2112. "* **Write_Data_To_CSV_expand():**\n",
  2113. " Schreibt alle berechnten Parameter (Top1-/Top5-Accuracy, AUC, F1-Score) in ein CSV-File"
  2114. ]
  2115. },
  2116. {
  2117. "cell_type": "code",
  2118. "execution_count": 44,
  2119. "metadata": {},
  2120. "outputs": [],
  2121. "source": [
  2122. "## Function to write Data to CSV-File\n",
  2123. "def Write_Data_To_CSV(database, net, train_num, test_num, batchSize_Train, batchSize_Test, learning_rate, momentum, epoch, running_loss, train_time, time_format, accuracy, stamp):\n",
  2124. " CSV = pd.read_csv(\"CSV_Files/Logbuch_CSV_corr.csv\", sep=';')\n",
  2125. " CSV_df = pd.DataFrame(CSV)\n",
  2126. "\n",
  2127. " Names = [{ \n",
  2128. " \"Datensatz\":database,\n",
  2129. " \"Netzwerk\":net,\n",
  2130. " \"Anzahl Trainingsbilder\": train_num,\n",
  2131. " \"Anzahl Testbilder\": test_num,\n",
  2132. " \"Batch_Size Training\": batchSize_Train,\n",
  2133. " \"Batch_Size Test\": batchSize_Test,\n",
  2134. " \"Learning Rate\": learning_rate,\n",
  2135. " \"Momentum\": momentum,\n",
  2136. " \"Epochen\": epoch+1, \n",
  2137. " \"Running Loss\": running_loss, \n",
  2138. " \"Dauer Training\":train_time, \n",
  2139. " \"Zeitformat\":time_format,\n",
  2140. " \"Accuracy\": accuracy, \n",
  2141. " \"Stempel\": stamp\n",
  2142. " }]\n",
  2143. " Names_df = pd.DataFrame(Names)\n",
  2144. " df_neu = CSV_df.append(Names_df, ignore_index=True)\n",
  2145. " df_neu.to_csv(\"CSV_Files/Logbuch_CSV.csv\", sep=';', index=False, header=True)\n",
  2146. " return pd.read_csv(\"CSV_Files/Logbuch_CSV.csv\", sep=';')"
  2147. ]
  2148. },
  2149. {
  2150. "cell_type": "code",
  2151. "execution_count": 45,
  2152. "metadata": {},
  2153. "outputs": [],
  2154. "source": [
  2155. "def Write_Data_To_CSV_expand(database, net, train_num, test_num, batchSize_Train, batchSize_Test, learning_rate, momentum, epoch, running_loss, train_time, time_format, accuracy, Acc_all, Top_1_f, Top_5_f, AUC, F1_f, F1_score_all, stamp):\n",
  2156. " CSV = pd.read_csv(\"CSV_Files/Logbuch_CSV_erweitert.csv\", sep=';')\n",
  2157. " CSV_df = pd.DataFrame(CSV)\n",
  2158. "\n",
  2159. " Names = [{ \n",
  2160. " \"Datensatz\":database,\n",
  2161. " \"Netzwerk\":net,\n",
  2162. " \"Anzahl Trainingsbilder\": train_num,\n",
  2163. " \"Anzahl Testbilder\": test_num,\n",
  2164. " \"Batch_Size Training\": batchSize_Train,\n",
  2165. " \"Batch_Size Test\": batchSize_Test,\n",
  2166. " \"Learning Rate\": learning_rate,\n",
  2167. " \"Momentum\": momentum,\n",
  2168. " \"Epochen\": epoch+1, \n",
  2169. " \"Running Loss\": running_loss, \n",
  2170. " \"Dauer Training\":train_time, \n",
  2171. " \"Zeitformat\":time_format,\n",
  2172. " \"Accuracy\": accuracy, \n",
  2173. " \"Accuracy_PyLig\": Acc_all.numpy(),\n",
  2174. " \"Top1\": Top_1_f,\n",
  2175. " \"Top5\": Top_5_f,\n",
  2176. " \"AUC\": AUC.numpy(),\n",
  2177. " \"F1_my\": F1_f.numpy(),\n",
  2178. " \"F1_PyLig\": F1_score_all.numpy(),\n",
  2179. " \"Stempel\": stamp\n",
  2180. " }]\n",
  2181. " Names_df = pd.DataFrame(Names)\n",
  2182. " df_neu = CSV_df.append(Names_df, ignore_index=True)\n",
  2183. " df_neu.to_csv(\"CSV_Files/Logbuch_CSV_erweitert.csv\", sep=';', index=False, header=True)\n",
  2184. " return pd.read_csv(\"CSV_Files/Logbuch_CSV_erweitert.csv\", sep=';')"
  2185. ]
  2186. },
  2187. {
  2188. "cell_type": "code",
  2189. "execution_count": 40,
  2190. "metadata": {},
  2191. "outputs": [
  2192. {
  2193. "data": {
  2194. "text/html": [
  2195. "<div>\n",
  2196. "<style scoped>\n",
  2197. " .dataframe tbody tr th:only-of-type {\n",
  2198. " vertical-align: middle;\n",
  2199. " }\n",
  2200. "\n",
  2201. " .dataframe tbody tr th {\n",
  2202. " vertical-align: top;\n",
  2203. " }\n",
  2204. "\n",
  2205. " .dataframe thead th {\n",
  2206. " text-align: right;\n",
  2207. " }\n",
  2208. "</style>\n",
  2209. "<table border=\"1\" class=\"dataframe\">\n",
  2210. " <thead>\n",
  2211. " <tr style=\"text-align: right;\">\n",
  2212. " <th></th>\n",
  2213. " <th>Datensatz</th>\n",
  2214. " <th>Netzwerk</th>\n",
  2215. " <th>Anzahl Trainingsbilder</th>\n",
  2216. " <th>Anzahl Testbilder</th>\n",
  2217. " <th>Batch_Size Training</th>\n",
  2218. " <th>Batch_Size Test</th>\n",
  2219. " <th>Learning Rate</th>\n",
  2220. " <th>Momentum</th>\n",
  2221. " <th>Epochen</th>\n",
  2222. " <th>Running Loss</th>\n",
  2223. " <th>Dauer Training</th>\n",
  2224. " <th>Zeitformat</th>\n",
  2225. " <th>Accuracy</th>\n",
  2226. " <th>Accuracy_PyLig</th>\n",
  2227. " <th>Top1</th>\n",
  2228. " <th>Top5</th>\n",
  2229. " <th>AUC</th>\n",
  2230. " <th>F1_my</th>\n",
  2231. " <th>F1_PyLig</th>\n",
  2232. " <th>Stempel</th>\n",
  2233. " </tr>\n",
  2234. " </thead>\n",
  2235. " <tbody>\n",
  2236. " <tr>\n",
  2237. " <th>0</th>\n",
  2238. " <td>Neu</td>\n",
  2239. " <td>NaN</td>\n",
  2240. " <td>NaN</td>\n",
  2241. " <td>NaN</td>\n",
  2242. " <td>NaN</td>\n",
  2243. " <td>NaN</td>\n",
  2244. " <td>NaN</td>\n",
  2245. " <td>NaN</td>\n",
  2246. " <td>NaN</td>\n",
  2247. " <td>NaN</td>\n",
  2248. " <td>NaN</td>\n",
  2249. " <td>NaN</td>\n",
  2250. " <td>NaN</td>\n",
  2251. " <td>NaN</td>\n",
  2252. " <td>NaN</td>\n",
  2253. " <td>NaN</td>\n",
  2254. " <td>NaN</td>\n",
  2255. " <td>NaN</td>\n",
  2256. " <td>NaN</td>\n",
  2257. " <td>NaN</td>\n",
  2258. " </tr>\n",
  2259. " <tr>\n",
  2260. " <th>1</th>\n",
  2261. " <td>CP</td>\n",
  2262. " <td>Resnext101-32x8d</td>\n",
  2263. " <td>68.0</td>\n",
  2264. " <td>34.0</td>\n",
  2265. " <td>4.0</td>\n",
  2266. " <td>4.0</td>\n",
  2267. " <td>0.001</td>\n",
  2268. " <td>0.8</td>\n",
  2269. " <td>50.0</td>\n",
  2270. " <td>0.005421876907348633</td>\n",
  2271. " <td>02:51</td>\n",
  2272. " <td>[MM:SS]</td>\n",
  2273. " <td>97.06</td>\n",
  2274. " <td>97.06</td>\n",
  2275. " <td>97.22</td>\n",
  2276. " <td>100.0</td>\n",
  2277. " <td>98.44</td>\n",
  2278. " <td>97.22</td>\n",
  2279. " <td>97.06</td>\n",
  2280. " <td>2021_02_03-18_10_22_CP_Resnext101-32x8d</td>\n",
  2281. " </tr>\n",
  2282. " <tr>\n",
  2283. " <th>2</th>\n",
  2284. " <td>AMI</td>\n",
  2285. " <td>Resnext101-32x8d</td>\n",
  2286. " <td>500.0</td>\n",
  2287. " <td>200.0</td>\n",
  2288. " <td>4.0</td>\n",
  2289. " <td>4.0</td>\n",
  2290. " <td>0.001</td>\n",
  2291. " <td>0.8</td>\n",
  2292. " <td>50.0</td>\n",
  2293. " <td>0.026825428009033203</td>\n",
  2294. " <td>21:03</td>\n",
  2295. " <td>[MM:SS]</td>\n",
  2296. " <td>96.0</td>\n",
  2297. " <td>96.0</td>\n",
  2298. " <td>96.0</td>\n",
  2299. " <td>99.0</td>\n",
  2300. " <td>97.98</td>\n",
  2301. " <td>96.0</td>\n",
  2302. " <td>96.0</td>\n",
  2303. " <td>2021_02_03-20_49_49_AMI_Resnext101-32x8d</td>\n",
  2304. " </tr>\n",
  2305. " <tr>\n",
  2306. " <th>3</th>\n",
  2307. " <td>AWE</td>\n",
  2308. " <td>Resnext101-32x8d</td>\n",
  2309. " <td>800.0</td>\n",
  2310. " <td>200.0</td>\n",
  2311. " <td>4.0</td>\n",
  2312. " <td>4.0</td>\n",
  2313. " <td>0.001</td>\n",
  2314. " <td>0.8</td>\n",
  2315. " <td>50.0</td>\n",
  2316. " <td>0.0</td>\n",
  2317. " <td>33:36:00</td>\n",
  2318. " <td>[MM:SS]</td>\n",
  2319. " <td>51.5</td>\n",
  2320. " <td>51.5</td>\n",
  2321. " <td>51.5</td>\n",
  2322. " <td>73.0</td>\n",
  2323. " <td>75.51</td>\n",
  2324. " <td>51.5</td>\n",
  2325. " <td>51.5</td>\n",
  2326. " <td>2021_02_03-22_11_34_AWE_Resnext101-32x8d</td>\n",
  2327. " </tr>\n",
  2328. " <tr>\n",
  2329. " <th>4</th>\n",
  2330. " <td>UERC</td>\n",
  2331. " <td>Resnext101-32x8d</td>\n",
  2332. " <td>2192.0</td>\n",
  2333. " <td>548.0</td>\n",
  2334. " <td>4.0</td>\n",
  2335. " <td>4.0</td>\n",
  2336. " <td>0.001</td>\n",
  2337. " <td>0.8</td>\n",
  2338. " <td>50.0</td>\n",
  2339. " <td>0.6218500137329102</td>\n",
  2340. " <td>02:32:02</td>\n",
  2341. " <td>[HH:MM:SS]</td>\n",
  2342. " <td>30.29</td>\n",
  2343. " <td>30.29</td>\n",
  2344. " <td>30.29</td>\n",
  2345. " <td>49.63</td>\n",
  2346. " <td>65.02</td>\n",
  2347. " <td>30.29</td>\n",
  2348. " <td>30.29</td>\n",
  2349. " <td>2021_02_03-22_47_50_UERC_Resnext101-32x8d</td>\n",
  2350. " </tr>\n",
  2351. " <tr>\n",
  2352. " <th>5</th>\n",
  2353. " <td>CP_e</td>\n",
  2354. " <td>Resnext101-32x8d_e</td>\n",
  2355. " <td>340.0</td>\n",
  2356. " <td>68.0</td>\n",
  2357. " <td>4.0</td>\n",
  2358. " <td>4.0</td>\n",
  2359. " <td>0.001</td>\n",
  2360. " <td>0.8</td>\n",
  2361. " <td>50.0</td>\n",
  2362. " <td>0.009591817855834961</td>\n",
  2363. " <td>14:22</td>\n",
  2364. " <td>[MM:SS]</td>\n",
  2365. " <td>100.0</td>\n",
  2366. " <td>100.0</td>\n",
  2367. " <td>100.0</td>\n",
  2368. " <td>100.0</td>\n",
  2369. " <td>100.0</td>\n",
  2370. " <td>100.0</td>\n",
  2371. " <td>100.0</td>\n",
  2372. " <td>2021_02_04-17_32_38_CP_Resnext101-32x8d</td>\n",
  2373. " </tr>\n",
  2374. " <tr>\n",
  2375. " <th>6</th>\n",
  2376. " <td>AMI_e</td>\n",
  2377. " <td>Resnext101-32x8d_e</td>\n",
  2378. " <td>2400.0</td>\n",
  2379. " <td>400.0</td>\n",
  2380. " <td>4.0</td>\n",
  2381. " <td>4.0</td>\n",
  2382. " <td>0.001</td>\n",
  2383. " <td>0.8</td>\n",
  2384. " <td>50.0</td>\n",
  2385. " <td>0.0</td>\n",
  2386. " <td>02:40:59</td>\n",
  2387. " <td>[HH:MM:SS]</td>\n",
  2388. " <td>100.0</td>\n",
  2389. " <td>100.0</td>\n",
  2390. " <td>100.0</td>\n",
  2391. " <td>100.0</td>\n",
  2392. " <td>100.0</td>\n",
  2393. " <td>100.0</td>\n",
  2394. " <td>100.0</td>\n",
  2395. " <td>2021_02_04-17_51_14_AMI_Resnext101-32x8d</td>\n",
  2396. " </tr>\n",
  2397. " <tr>\n",
  2398. " <th>7</th>\n",
  2399. " <td>AWE_e</td>\n",
  2400. " <td>Resnext101-32x8d_e</td>\n",
  2401. " <td>3200.0</td>\n",
  2402. " <td>800.0</td>\n",
  2403. " <td>4.0</td>\n",
  2404. " <td>4.0</td>\n",
  2405. " <td>0.001</td>\n",
  2406. " <td>0.8</td>\n",
  2407. " <td>50.0</td>\n",
  2408. " <td>0.0</td>\n",
  2409. " <td>03:14:34</td>\n",
  2410. " <td>[HH:MM:SS]</td>\n",
  2411. " <td>98.375</td>\n",
  2412. " <td>98.375</td>\n",
  2413. " <td>98.375</td>\n",
  2414. " <td>99.5</td>\n",
  2415. " <td>9.917.928</td>\n",
  2416. " <td>98.375</td>\n",
  2417. " <td>98.375</td>\n",
  2418. " <td>2021_02_04-21_54_54_AWE_Resnext101-32x8d</td>\n",
  2419. " </tr>\n",
  2420. " <tr>\n",
  2421. " <th>8</th>\n",
  2422. " <td>UERC_e</td>\n",
  2423. " <td>Resnext101-32x8d_e</td>\n",
  2424. " <td>8768.0</td>\n",
  2425. " <td>2192.0</td>\n",
  2426. " <td>4.0</td>\n",
  2427. " <td>4.0</td>\n",
  2428. " <td>0.001</td>\n",
  2429. " <td>0.8</td>\n",
  2430. " <td>50.0</td>\n",
  2431. " <td>0.004006385803222656</td>\n",
  2432. " <td>07:07:53</td>\n",
  2433. " <td>[HH:MM:SS]</td>\n",
  2434. " <td>9.630.474.452.554.740</td>\n",
  2435. " <td>9.630.474</td>\n",
  2436. " <td>9.630.474.090.576.170</td>\n",
  2437. " <td>9.945.255.279.541.010</td>\n",
  2438. " <td>9.814.559</td>\n",
  2439. " <td>9.630.474</td>\n",
  2440. " <td>9.630.474</td>\n",
  2441. " <td>2021_02_05-10_11_05_UERC_Resnext101-32x8d</td>\n",
  2442. " </tr>\n",
  2443. " <tr>\n",
  2444. " <th>9</th>\n",
  2445. " <td>EarVN_1_0</td>\n",
  2446. " <td>Resnext101-32x8d</td>\n",
  2447. " <td>22681.0</td>\n",
  2448. " <td>5731.0</td>\n",
  2449. " <td>4.0</td>\n",
  2450. " <td>4.0</td>\n",
  2451. " <td>0.001</td>\n",
  2452. " <td>0.8</td>\n",
  2453. " <td>50.0</td>\n",
  2454. " <td>29.751.343.727.111.800</td>\n",
  2455. " <td>17:26:41</td>\n",
  2456. " <td>[HH:MM:SS]</td>\n",
  2457. " <td>92.23</td>\n",
  2458. " <td>92.235.214</td>\n",
  2459. " <td>9.223.656.463.623.040</td>\n",
  2460. " <td>9.738.311.004.638.670</td>\n",
  2461. " <td>9.600.976</td>\n",
  2462. " <td>92.236.565</td>\n",
  2463. " <td>92.235.214</td>\n",
  2464. " <td>2021_02_05-18_04_07_EarVN_1_0_Resnext101-32x8d</td>\n",
  2465. " </tr>\n",
  2466. " <tr>\n",
  2467. " <th>10</th>\n",
  2468. " <td>AMI</td>\n",
  2469. " <td>AlexNet</td>\n",
  2470. " <td>100.0</td>\n",
  2471. " <td>40.0</td>\n",
  2472. " <td>4.0</td>\n",
  2473. " <td>4.0</td>\n",
  2474. " <td>0.001</td>\n",
  2475. " <td>0.8</td>\n",
  2476. " <td>50.0</td>\n",
  2477. " <td>0.00015020370483398438</td>\n",
  2478. " <td>00:22</td>\n",
  2479. " <td>[MM:SS]</td>\n",
  2480. " <td>95.0</td>\n",
  2481. " <td>95.0</td>\n",
  2482. " <td>95.0</td>\n",
  2483. " <td>100.0</td>\n",
  2484. " <td>97.368416</td>\n",
  2485. " <td>95.0</td>\n",
  2486. " <td>95.0</td>\n",
  2487. " <td>2021_02_27-17_31_53_AMI_AlexNet</td>\n",
  2488. " </tr>\n",
  2489. " </tbody>\n",
  2490. "</table>\n",
  2491. "</div>"
  2492. ],
  2493. "text/plain": [
  2494. " Datensatz Netzwerk Anzahl Trainingsbilder Anzahl Testbilder \\\n",
  2495. "0 Neu NaN NaN NaN \n",
  2496. "1 CP Resnext101-32x8d 68.0 34.0 \n",
  2497. "2 AMI Resnext101-32x8d 500.0 200.0 \n",
  2498. "3 AWE Resnext101-32x8d 800.0 200.0 \n",
  2499. "4 UERC Resnext101-32x8d 2192.0 548.0 \n",
  2500. "5 CP_e Resnext101-32x8d_e 340.0 68.0 \n",
  2501. "6 AMI_e Resnext101-32x8d_e 2400.0 400.0 \n",
  2502. "7 AWE_e Resnext101-32x8d_e 3200.0 800.0 \n",
  2503. "8 UERC_e Resnext101-32x8d_e 8768.0 2192.0 \n",
  2504. "9 EarVN_1_0 Resnext101-32x8d 22681.0 5731.0 \n",
  2505. "10 AMI AlexNet 100.0 40.0 \n",
  2506. "\n",
  2507. " Batch_Size Training Batch_Size Test Learning Rate Momentum Epochen \\\n",
  2508. "0 NaN NaN NaN NaN NaN \n",
  2509. "1 4.0 4.0 0.001 0.8 50.0 \n",
  2510. "2 4.0 4.0 0.001 0.8 50.0 \n",
  2511. "3 4.0 4.0 0.001 0.8 50.0 \n",
  2512. "4 4.0 4.0 0.001 0.8 50.0 \n",
  2513. "5 4.0 4.0 0.001 0.8 50.0 \n",
  2514. "6 4.0 4.0 0.001 0.8 50.0 \n",
  2515. "7 4.0 4.0 0.001 0.8 50.0 \n",
  2516. "8 4.0 4.0 0.001 0.8 50.0 \n",
  2517. "9 4.0 4.0 0.001 0.8 50.0 \n",
  2518. "10 4.0 4.0 0.001 0.8 50.0 \n",
  2519. "\n",
  2520. " Running Loss Dauer Training Zeitformat Accuracy \\\n",
  2521. "0 NaN NaN NaN NaN \n",
  2522. "1 0.005421876907348633 02:51 [MM:SS] 97.06 \n",
  2523. "2 0.026825428009033203 21:03 [MM:SS] 96.0 \n",
  2524. "3 0.0 33:36:00 [MM:SS] 51.5 \n",
  2525. "4 0.6218500137329102 02:32:02 [HH:MM:SS] 30.29 \n",
  2526. "5 0.009591817855834961 14:22 [MM:SS] 100.0 \n",
  2527. "6 0.0 02:40:59 [HH:MM:SS] 100.0 \n",
  2528. "7 0.0 03:14:34 [HH:MM:SS] 98.375 \n",
  2529. "8 0.004006385803222656 07:07:53 [HH:MM:SS] 9.630.474.452.554.740 \n",
  2530. "9 29.751.343.727.111.800 17:26:41 [HH:MM:SS] 92.23 \n",
  2531. "10 0.00015020370483398438 00:22 [MM:SS] 95.0 \n",
  2532. "\n",
  2533. " Accuracy_PyLig Top1 Top5 AUC \\\n",
  2534. "0 NaN NaN NaN NaN \n",
  2535. "1 97.06 97.22 100.0 98.44 \n",
  2536. "2 96.0 96.0 99.0 97.98 \n",
  2537. "3 51.5 51.5 73.0 75.51 \n",
  2538. "4 30.29 30.29 49.63 65.02 \n",
  2539. "5 100.0 100.0 100.0 100.0 \n",
  2540. "6 100.0 100.0 100.0 100.0 \n",
  2541. "7 98.375 98.375 99.5 9.917.928 \n",
  2542. "8 9.630.474 9.630.474.090.576.170 9.945.255.279.541.010 9.814.559 \n",
  2543. "9 92.235.214 9.223.656.463.623.040 9.738.311.004.638.670 9.600.976 \n",
  2544. "10 95.0 95.0 100.0 97.368416 \n",
  2545. "\n",
  2546. " F1_my F1_PyLig Stempel \n",
  2547. "0 NaN NaN NaN \n",
  2548. "1 97.22 97.06 2021_02_03-18_10_22_CP_Resnext101-32x8d \n",
  2549. "2 96.0 96.0 2021_02_03-20_49_49_AMI_Resnext101-32x8d \n",
  2550. "3 51.5 51.5 2021_02_03-22_11_34_AWE_Resnext101-32x8d \n",
  2551. "4 30.29 30.29 2021_02_03-22_47_50_UERC_Resnext101-32x8d \n",
  2552. "5 100.0 100.0 2021_02_04-17_32_38_CP_Resnext101-32x8d \n",
  2553. "6 100.0 100.0 2021_02_04-17_51_14_AMI_Resnext101-32x8d \n",
  2554. "7 98.375 98.375 2021_02_04-21_54_54_AWE_Resnext101-32x8d \n",
  2555. "8 9.630.474 9.630.474 2021_02_05-10_11_05_UERC_Resnext101-32x8d \n",
  2556. "9 92.236.565 92.235.214 2021_02_05-18_04_07_EarVN_1_0_Resnext101-32x8d \n",
  2557. "10 95.0 95.0 2021_02_27-17_31_53_AMI_AlexNet "
  2558. ]
  2559. },
  2560. "execution_count": 40,
  2561. "metadata": {},
  2562. "output_type": "execute_result"
  2563. }
  2564. ],
  2565. "source": [
  2566. "Write_Data_To_CSV_expand(Database, network_name, len(dataset_train), len(dataset_test), batch_size_train, batch_size_test, learning_rate, momentum, epoch, running_loss, time_dif, time_format, acc, acc_all, top_1_f, top_5_f, auroc_1, f1_f, f1_score_all, stamp)"
  2567. ]
  2568. },
  2569. {
  2570. "cell_type": "code",
  2571. "execution_count": 46,
  2572. "metadata": {},
  2573. "outputs": [
  2574. {
  2575. "data": {
  2576. "text/html": [
  2577. "<div>\n",
  2578. "<style scoped>\n",
  2579. " .dataframe tbody tr th:only-of-type {\n",
  2580. " vertical-align: middle;\n",
  2581. " }\n",
  2582. "\n",
  2583. " .dataframe tbody tr th {\n",
  2584. " vertical-align: top;\n",
  2585. " }\n",
  2586. "\n",
  2587. " .dataframe thead th {\n",
  2588. " text-align: right;\n",
  2589. " }\n",
  2590. "</style>\n",
  2591. "<table border=\"1\" class=\"dataframe\">\n",
  2592. " <thead>\n",
  2593. " <tr style=\"text-align: right;\">\n",
  2594. " <th></th>\n",
  2595. " <th>Datensatz</th>\n",
  2596. " <th>Netzwerk</th>\n",
  2597. " <th>Anzahl Trainingsbilder</th>\n",
  2598. " <th>Anzahl Testbilder</th>\n",
  2599. " <th>Batch_Size Training</th>\n",
  2600. " <th>Batch_Size Test</th>\n",
  2601. " <th>Learning Rate</th>\n",
  2602. " <th>Momentum</th>\n",
  2603. " <th>Epochen</th>\n",
  2604. " <th>Running Loss</th>\n",
  2605. " <th>Dauer Training</th>\n",
  2606. " <th>Zeitformat</th>\n",
  2607. " <th>Accuracy</th>\n",
  2608. " <th>Stempel</th>\n",
  2609. " </tr>\n",
  2610. " </thead>\n",
  2611. " <tbody>\n",
  2612. " <tr>\n",
  2613. " <th>0</th>\n",
  2614. " <td>AWE</td>\n",
  2615. " <td>VGG11</td>\n",
  2616. " <td>800</td>\n",
  2617. " <td>200</td>\n",
  2618. " <td>4</td>\n",
  2619. " <td>4</td>\n",
  2620. " <td>0.001</td>\n",
  2621. " <td>0.8</td>\n",
  2622. " <td>25</td>\n",
  2623. " <td>0.018202782</td>\n",
  2624. " <td>04:11</td>\n",
  2625. " <td>[MM:SS]</td>\n",
  2626. " <td>24.13</td>\n",
  2627. " <td>2020_10_13-13_47_08_AWE_VGG11</td>\n",
  2628. " </tr>\n",
  2629. " <tr>\n",
  2630. " <th>1</th>\n",
  2631. " <td>CP</td>\n",
  2632. " <td>VGG11</td>\n",
  2633. " <td>68</td>\n",
  2634. " <td>34</td>\n",
  2635. " <td>4</td>\n",
  2636. " <td>4</td>\n",
  2637. " <td>0.001</td>\n",
  2638. " <td>0.8</td>\n",
  2639. " <td>49</td>\n",
  2640. " <td>0.001134396</td>\n",
  2641. " <td>00:42</td>\n",
  2642. " <td>[MM:SS]</td>\n",
  2643. " <td>94.12</td>\n",
  2644. " <td>2020_10_13-13_47_08_CP_VGG11</td>\n",
  2645. " </tr>\n",
  2646. " <tr>\n",
  2647. " <th>2</th>\n",
  2648. " <td>AMI</td>\n",
  2649. " <td>VGG11</td>\n",
  2650. " <td>500</td>\n",
  2651. " <td>200</td>\n",
  2652. " <td>4</td>\n",
  2653. " <td>4</td>\n",
  2654. " <td>0.001</td>\n",
  2655. " <td>0.8</td>\n",
  2656. " <td>49</td>\n",
  2657. " <td>0.002470016</td>\n",
  2658. " <td>05:06</td>\n",
  2659. " <td>[MM:SS]</td>\n",
  2660. " <td>78.00</td>\n",
  2661. " <td>2020_10_13-13_47_08_AMI_VGG11</td>\n",
  2662. " </tr>\n",
  2663. " <tr>\n",
  2664. " <th>3</th>\n",
  2665. " <td>EarVN_1_0</td>\n",
  2666. " <td>VGG11</td>\n",
  2667. " <td>22681</td>\n",
  2668. " <td>5731</td>\n",
  2669. " <td>4</td>\n",
  2670. " <td>4</td>\n",
  2671. " <td>0.001</td>\n",
  2672. " <td>0.8</td>\n",
  2673. " <td>49</td>\n",
  2674. " <td>0</td>\n",
  2675. " <td>04:50:23</td>\n",
  2676. " <td>[HH:MM:SS]</td>\n",
  2677. " <td>68.14</td>\n",
  2678. " <td>2020_10_13-13_47_08_EarVN_1_0_VGG11</td>\n",
  2679. " </tr>\n",
  2680. " <tr>\n",
  2681. " <th>4</th>\n",
  2682. " <td>EarVN_1_0_e</td>\n",
  2683. " <td>VGG11_e</td>\n",
  2684. " <td>22681</td>\n",
  2685. " <td>5731</td>\n",
  2686. " <td>4</td>\n",
  2687. " <td>4</td>\n",
  2688. " <td>0.001</td>\n",
  2689. " <td>0.8</td>\n",
  2690. " <td>49</td>\n",
  2691. " <td>0</td>\n",
  2692. " <td>04:50:23</td>\n",
  2693. " <td>[HH:MM:SS]</td>\n",
  2694. " <td>68.14</td>\n",
  2695. " <td>2020_10_13-13_47_08_EarVN_1_0_VGG11</td>\n",
  2696. " </tr>\n",
  2697. " <tr>\n",
  2698. " <th>...</th>\n",
  2699. " <td>...</td>\n",
  2700. " <td>...</td>\n",
  2701. " <td>...</td>\n",
  2702. " <td>...</td>\n",
  2703. " <td>...</td>\n",
  2704. " <td>...</td>\n",
  2705. " <td>...</td>\n",
  2706. " <td>...</td>\n",
  2707. " <td>...</td>\n",
  2708. " <td>...</td>\n",
  2709. " <td>...</td>\n",
  2710. " <td>...</td>\n",
  2711. " <td>...</td>\n",
  2712. " <td>...</td>\n",
  2713. " </tr>\n",
  2714. " <tr>\n",
  2715. " <th>151</th>\n",
  2716. " <td>WPUT_e_w</td>\n",
  2717. " <td>GoogLeNet_e_w</td>\n",
  2718. " <td>9076</td>\n",
  2719. " <td>2904</td>\n",
  2720. " <td>4</td>\n",
  2721. " <td>4</td>\n",
  2722. " <td>0.001</td>\n",
  2723. " <td>0.8</td>\n",
  2724. " <td>50</td>\n",
  2725. " <td>4.961.103.916.168.210</td>\n",
  2726. " <td>03:17:00</td>\n",
  2727. " <td>[HH:MM:SS]</td>\n",
  2728. " <td>99.44</td>\n",
  2729. " <td>2020_11_01-11_07_43_WPUT_GoogLeNet</td>\n",
  2730. " </tr>\n",
  2731. " <tr>\n",
  2732. " <th>152</th>\n",
  2733. " <td>WPUT_e_w</td>\n",
  2734. " <td>Shufflenet-v2-x0_5_e_w</td>\n",
  2735. " <td>9076</td>\n",
  2736. " <td>2904</td>\n",
  2737. " <td>4</td>\n",
  2738. " <td>4</td>\n",
  2739. " <td>0.001</td>\n",
  2740. " <td>0.8</td>\n",
  2741. " <td>50</td>\n",
  2742. " <td>43.149.518.966.674.800</td>\n",
  2743. " <td>03:09:59</td>\n",
  2744. " <td>[HH:MM:SS]</td>\n",
  2745. " <td>99.35</td>\n",
  2746. " <td>2020_11_01-13_56_51_WPUT_Shufflenet-v2-x0_5</td>\n",
  2747. " </tr>\n",
  2748. " <tr>\n",
  2749. " <th>153</th>\n",
  2750. " <td>WPUT_e_w</td>\n",
  2751. " <td>Resnext101-32x8d_e_w</td>\n",
  2752. " <td>9076</td>\n",
  2753. " <td>2904</td>\n",
  2754. " <td>4</td>\n",
  2755. " <td>4</td>\n",
  2756. " <td>0.001</td>\n",
  2757. " <td>0.8</td>\n",
  2758. " <td>50</td>\n",
  2759. " <td>0.841792107</td>\n",
  2760. " <td>07:52:04</td>\n",
  2761. " <td>[HH:MM:SS]</td>\n",
  2762. " <td>100.00</td>\n",
  2763. " <td>2020_11_01-16_10_09_WPUT_Resnext101-32x8d</td>\n",
  2764. " </tr>\n",
  2765. " <tr>\n",
  2766. " <th>154</th>\n",
  2767. " <td>UERC_w</td>\n",
  2768. " <td>Resnext101-32x8d_w</td>\n",
  2769. " <td>2192</td>\n",
  2770. " <td>548</td>\n",
  2771. " <td>4</td>\n",
  2772. " <td>4</td>\n",
  2773. " <td>0.001</td>\n",
  2774. " <td>0.8</td>\n",
  2775. " <td>50</td>\n",
  2776. " <td>0.597034216</td>\n",
  2777. " <td>02:36:52</td>\n",
  2778. " <td>[HH:MM:SS]</td>\n",
  2779. " <td>44.13</td>\n",
  2780. " <td>2020_10_23-10_11_30_UERC_Resnext101-32x8d</td>\n",
  2781. " </tr>\n",
  2782. " <tr>\n",
  2783. " <th>155</th>\n",
  2784. " <td>AMI</td>\n",
  2785. " <td>AlexNet</td>\n",
  2786. " <td>100</td>\n",
  2787. " <td>40</td>\n",
  2788. " <td>4</td>\n",
  2789. " <td>4</td>\n",
  2790. " <td>0.001</td>\n",
  2791. " <td>0.8</td>\n",
  2792. " <td>50</td>\n",
  2793. " <td>0.00015020370483398438</td>\n",
  2794. " <td>00:22</td>\n",
  2795. " <td>[MM:SS]</td>\n",
  2796. " <td>95.00</td>\n",
  2797. " <td>2021_02_27-17_31_53_AMI_AlexNet</td>\n",
  2798. " </tr>\n",
  2799. " </tbody>\n",
  2800. "</table>\n",
  2801. "<p>156 rows × 14 columns</p>\n",
  2802. "</div>"
  2803. ],
  2804. "text/plain": [
  2805. " Datensatz Netzwerk Anzahl Trainingsbilder \\\n",
  2806. "0 AWE VGG11 800 \n",
  2807. "1 CP VGG11 68 \n",
  2808. "2 AMI VGG11 500 \n",
  2809. "3 EarVN_1_0 VGG11 22681 \n",
  2810. "4 EarVN_1_0_e VGG11_e 22681 \n",
  2811. ".. ... ... ... \n",
  2812. "151 WPUT_e_w GoogLeNet_e_w 9076 \n",
  2813. "152 WPUT_e_w Shufflenet-v2-x0_5_e_w 9076 \n",
  2814. "153 WPUT_e_w Resnext101-32x8d_e_w 9076 \n",
  2815. "154 UERC_w Resnext101-32x8d_w 2192 \n",
  2816. "155 AMI AlexNet 100 \n",
  2817. "\n",
  2818. " Anzahl Testbilder Batch_Size Training Batch_Size Test Learning Rate \\\n",
  2819. "0 200 4 4 0.001 \n",
  2820. "1 34 4 4 0.001 \n",
  2821. "2 200 4 4 0.001 \n",
  2822. "3 5731 4 4 0.001 \n",
  2823. "4 5731 4 4 0.001 \n",
  2824. ".. ... ... ... ... \n",
  2825. "151 2904 4 4 0.001 \n",
  2826. "152 2904 4 4 0.001 \n",
  2827. "153 2904 4 4 0.001 \n",
  2828. "154 548 4 4 0.001 \n",
  2829. "155 40 4 4 0.001 \n",
  2830. "\n",
  2831. " Momentum Epochen Running Loss Dauer Training Zeitformat \\\n",
  2832. "0 0.8 25 0.018202782 04:11 [MM:SS] \n",
  2833. "1 0.8 49 0.001134396 00:42 [MM:SS] \n",
  2834. "2 0.8 49 0.002470016 05:06 [MM:SS] \n",
  2835. "3 0.8 49 0 04:50:23 [HH:MM:SS] \n",
  2836. "4 0.8 49 0 04:50:23 [HH:MM:SS] \n",
  2837. ".. ... ... ... ... ... \n",
  2838. "151 0.8 50 4.961.103.916.168.210 03:17:00 [HH:MM:SS] \n",
  2839. "152 0.8 50 43.149.518.966.674.800 03:09:59 [HH:MM:SS] \n",
  2840. "153 0.8 50 0.841792107 07:52:04 [HH:MM:SS] \n",
  2841. "154 0.8 50 0.597034216 02:36:52 [HH:MM:SS] \n",
  2842. "155 0.8 50 0.00015020370483398438 00:22 [MM:SS] \n",
  2843. "\n",
  2844. " Accuracy Stempel \n",
  2845. "0 24.13 2020_10_13-13_47_08_AWE_VGG11 \n",
  2846. "1 94.12 2020_10_13-13_47_08_CP_VGG11 \n",
  2847. "2 78.00 2020_10_13-13_47_08_AMI_VGG11 \n",
  2848. "3 68.14 2020_10_13-13_47_08_EarVN_1_0_VGG11 \n",
  2849. "4 68.14 2020_10_13-13_47_08_EarVN_1_0_VGG11 \n",
  2850. ".. ... ... \n",
  2851. "151 99.44 2020_11_01-11_07_43_WPUT_GoogLeNet \n",
  2852. "152 99.35 2020_11_01-13_56_51_WPUT_Shufflenet-v2-x0_5 \n",
  2853. "153 100.00 2020_11_01-16_10_09_WPUT_Resnext101-32x8d \n",
  2854. "154 44.13 2020_10_23-10_11_30_UERC_Resnext101-32x8d \n",
  2855. "155 95.00 2021_02_27-17_31_53_AMI_AlexNet \n",
  2856. "\n",
  2857. "[156 rows x 14 columns]"
  2858. ]
  2859. },
  2860. "execution_count": 46,
  2861. "metadata": {},
  2862. "output_type": "execute_result"
  2863. }
  2864. ],
  2865. "source": [
  2866. "Write_Data_To_CSV(Database, network_name, len(dataset_train), len(dataset_test), batch_size_train, batch_size_test, learning_rate, momentum, epoch, running_loss, time_dif, time_format, acc, stamp)"
  2867. ]
  2868. },
  2869. {
  2870. "cell_type": "markdown",
  2871. "metadata": {},
  2872. "source": [
  2873. "## PR-Kurve mit Tensorboard\n",
  2874. "\n",
  2875. "Generiert für alle Kategorien eine PR-Kurve in Tensorboard. Diese Funktion wird schlußendlich nicht zur Bewertung der Datensätze und Netzwerke verwendet."
  2876. ]
  2877. },
  2878. {
  2879. "cell_type": "code",
  2880. "execution_count": 33,
  2881. "metadata": {},
  2882. "outputs": [],
  2883. "source": [
  2884. "# 1. gets the probability predictions in a test_size x num_classes Tensor\n",
  2885. "# 2. gets the preds in a test_size Tensor\n",
  2886. "# takes ~10 seconds to run\n",
  2887. "\n",
  2888. "class_probs = []\n",
  2889. "class_preds = []\n",
  2890. "with torch.no_grad():\n",
  2891. " for data in test_loader:\n",
  2892. " images, labels = data\n",
  2893. " network.to(DEVICE)\n",
  2894. " network.cpu()\n",
  2895. " output = network(images)\n",
  2896. " class_probs_batch = [F.softmax(el, dim=0) for el in output]\n",
  2897. " _, class_preds_batch = torch.max(output, 1)\n",
  2898. "\n",
  2899. " class_probs.append(class_probs_batch)\n",
  2900. " class_preds.append(class_preds_batch)\n",
  2901. "\n",
  2902. "test_probs = torch.cat([torch.stack(batch) for batch in class_probs])\n",
  2903. "test_preds = torch.cat(class_preds)\n",
  2904. "\n",
  2905. "# helper function\n",
  2906. "def add_pr_curve_tensorboard(class_index, test_probs, test_preds, global_step=0):\n",
  2907. " '''\n",
  2908. " Takes in a \"class_index\" from 0 to 9 and plots the corresponding\n",
  2909. " precision-recall curve\n",
  2910. " '''\n",
  2911. " tensorboard_preds = test_preds == class_index\n",
  2912. " tensorboard_probs = test_probs[:, class_index]\n",
  2913. "\n",
  2914. " writer.add_pr_curve(CATEGORIES[class_index],\n",
  2915. " tensorboard_preds,\n",
  2916. " tensorboard_probs,\n",
  2917. " global_step=global_step)\n",
  2918. " writer.close()\n",
  2919. "\n",
  2920. "# plot all the pr curves\n",
  2921. "for i in range(len(CATEGORIES)):\n",
  2922. " add_pr_curve_tensorboard(i, test_probs, test_preds)"
  2923. ]
  2924. }
  2925. ],
  2926. "metadata": {
  2927. "kernelspec": {
  2928. "display_name": "Python 3",
  2929. "language": "python",
  2930. "name": "python3"
  2931. },
  2932. "language_info": {
  2933. "codemirror_mode": {
  2934. "name": "ipython",
  2935. "version": 3
  2936. },
  2937. "file_extension": ".py",
  2938. "mimetype": "text/x-python",
  2939. "name": "python",
  2940. "nbconvert_exporter": "python",
  2941. "pygments_lexer": "ipython3",
  2942. "version": "3.8.3"
  2943. }
  2944. },
  2945. "nbformat": 4,
  2946. "nbformat_minor": 4
  2947. }