From f1083d4e7aaaea7d472a5961d12dbe290634ff88 Mon Sep 17 00:00:00 2001 From: Wojciech Jarmosz Date: Fri, 14 May 2021 04:01:11 +0200 Subject: [PATCH] Add evaluation --- Jenkins_eval | 42 +++ Jenkinsfile | 2 +- Jenkinsfile_train | 8 +- create_chart.py | 20 ++ evaluation.py | 28 ++ linear_regression.h5 | Bin 0 -> 49808 bytes linear_regression/keras_metadata.pb | 8 - linear_regression/saved_model.pb | Bin 138849 -> 0 bytes .../variables/variables.data-00000-of-00001 | Bin 14806 -> 0 bytes linear_regression/variables/variables.index | Bin 2215 -> 0 bytes requirements.txt | 5 + results.txt | 331 ------------------ training.py | 19 +- 13 files changed, 115 insertions(+), 348 deletions(-) create mode 100644 Jenkins_eval create mode 100644 create_chart.py create mode 100644 evaluation.py create mode 100644 linear_regression.h5 delete mode 100644 linear_regression/keras_metadata.pb delete mode 100644 linear_regression/saved_model.pb delete mode 100644 linear_regression/variables/variables.data-00000-of-00001 delete mode 100644 linear_regression/variables/variables.index delete mode 100644 results.txt diff --git a/Jenkins_eval b/Jenkins_eval new file mode 100644 index 0000000..4f29a84 --- /dev/null +++ b/Jenkins_eval @@ -0,0 +1,42 @@ +pipeline { + agent { + dockerfile true + } + parameters { + buildSelector(defaultSelector: lastSuccessful(), description: 'Use latest build training', name: 'BUILD_SELECTOR_TRAINING'), + gitParameter branchFilter: 'origin/(.*)', defaultValue: 'master', name: 'branchName', type: 'PT_BRANCH', + + } + stages { + stage("Copy artifacts"){ + steps { + copyArtifacts fingerprintArtifacts: true, projectName: 's434704-training/${params.branchName}', selector: buildParameter('BUILD_SELECTOR') + copyArtifacts fingerprintArtifacts: true, projectName: 's434704-evaluation', selector: buildParameter(lastSuccessful(), optional: true) + copyArtifacts fingerprintArtifacts: true, projectName: 's434704-create-dataset', selector: buildParameter(lastSuccessful()) + } + } + stage("Run evaluation"){ + steps { + sh "python3 evaluation.py" + } + } + stage('Archive single metrics') { + steps{ + archiveArtifacts 'single_metrics.txt' + } + } + stage('Save metrics to bulk file & create chart') { + steps{ + sh "if [ -f "single_metrics.txt" ]; "${env.BUILD_ID} ${cat single_metrics.txt}" >> bulk_metrics.txt fi" + archiveArtifacts 'bulk_metrics.txt' + sh "python3 create_chart.py" + archiveArtifacts 'chart.png' + } + } + } + post { + always { + mail body: "EVALUATION - ${currentBuild.currentResult}", subject: 's434704', to: '26ab8f35.uam.onmicrosoft.com@emea.teams.ms' + } + } +} \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile index 318dfcb..6c9f70a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -28,7 +28,7 @@ stages { post { success { build job: 's434704-training/master', parameters: [ - string(name: 'options', value: "-shuffle=true") + string(name: 'options', value: "verpose=0 epochs=100") ], wait: false } } diff --git a/Jenkinsfile_train b/Jenkinsfile_train index d835ce4..26b73c5 100644 --- a/Jenkinsfile_train +++ b/Jenkinsfile_train @@ -3,6 +3,7 @@ pipeline { dockerfile true } parameters { + gitParameter branchFilter: 'origin/(.*)', defaultValue: 'master', name: 'BRANCH', type: 'PT_BRANCH' string(name: 'options', description: 'Trainig script options') buildSelector(defaultSelector: lastSuccessful(), description: 'Use latest build', name: 'BUILD_SELECTOR') } @@ -25,7 +26,12 @@ pipeline { } post { always { - mail body: "${currentBuild.currentResult}", subject: 's434704', to: '26ab8f35.uam.onmicrosoft.com@emea.teams.ms' + mail body: "TRAINING - ${currentBuild.currentResult}", subject: 's434704', to: '26ab8f35.uam.onmicrosoft.com@emea.teams.ms' + } + success { + build job: 's434704-evaluation/master', parameters: [ + string(name: 'branchName', value: "${params.BRANCH}") + ], wait: false } } } \ No newline at end of file diff --git a/create_chart.py b/create_chart.py new file mode 100644 index 0000000..6e9bfa3 --- /dev/null +++ b/create_chart.py @@ -0,0 +1,20 @@ +import sys +import os.path + +import matplotlib +from matplotlib import pyplot as plt + +x = [] +y = [] + +if os.path.exists('bulk_metrics.txt'): + with open('bulk_metrics.txt') as file: + for line in file.readlines(): + single_x, single_y = line.split(" ") + x.append(single_x) + y.append(single_y) + +plt.plot(x, y) +plt.xlabel('Jobs') +plt.ylabel('RMSE') +plt.savefig('chart.png') diff --git a/evaluation.py b/evaluation.py new file mode 100644 index 0000000..8e13373 --- /dev/null +++ b/evaluation.py @@ -0,0 +1,28 @@ +import sys +import pandas as pd +import numpy as np +import tensorflow as tf +import os.path + +from tensorflow import keras +from tensorflow.keras import layers +from tensorflow.keras.layers.experimental import preprocessing + +# Wczytanie danych +test_data = pd.read_csv("./MoviesOnStreamingPlatforms_updated.test") + +columns_to_use = ['Year', 'Runtime', 'Netflix'] +test_X = tf.convert_to_tensor(test_data[columns_to_use]) +test_Y = tf.convert_to_tensor(test_data[["IMDb"]]) + +model = tf.keras.models.load_model('linear_regression.h5') + +scores = model.evaluate(x=test_X, + y=test_Y) + +with open('single_metrics.txt', 'w') as file: + for idx, score in enumerate(scores): + if idx == 0: + file.write("Recall: " + str(score) + "\n") + if idx == 1: + file.write("RMSE: " + str(score) + "\n") diff --git a/linear_regression.h5 b/linear_regression.h5 new file mode 100644 index 0000000000000000000000000000000000000000..e15841a0210b79f5e439c8f5463898f894da0d77 GIT binary patch literal 49808 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 diff --git a/linear_regression/variables/variables.data-00000-of-00001 b/linear_regression/variables/variables.data-00000-of-00001 deleted file mode 100644 index 1de6d51341eb93a7787844ec6178072c9a75d2fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14806 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 diff --git a/linear_regression/variables/variables.index b/linear_regression/variables/variables.index deleted file mode 100644 index b91330644150e8c775fbfc47fe4f66a4454a0eaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2215 zcmZQzVB=tvV&Y(Akl~Ma_HcFf4)FK%3vqPvagFzP@^Wg-)Rlt~Xvzw44HnZ9b@>nx1-_E}lEfTB8kT@G$Zd6)#bC;tlUSKr6kncMk`Z5? znwg$aQmjjawVXg}B{Vop4>K$Ih|2TlrY7d$x0FSQiGx{#$235Hj;^S(U|C{OW@27) zDiN9#c!1i1H`(nLRunSSPs&UzCag(Lp@UhY!ql!xDN@>0$Uh*&)7LY~H7GvV$3H|r zzn~;DH?u0WNI#btlcq=kO_F}|EW|`csEim54TeAs9K255qKaa`IL%8X5FZ?%paEhz z1qF>4Os10ds{3S3#mRLv!n8HwAmhYjT;`?)lbouXOf8xTMOJRjIP{a8PE7cjy#IdAiBYk2cK@J!RTnY^= z8XGuGxeRAXQy2>n<9eh)##IJh(I+kzAi91Sf^=E#iq-+ff-#Y?AgORbR3pXI`1@Rc z3S&W1;fxN@Bu2jKMa0E|q{0qopoXxe#;ZjY#fc4YE?|I5D%{}Jc)@O}clg3}3IiNs z+!Ga$aiVEf?!*N+MArptkgh5|@matCHz6{>85KG}C25w z1vsNZgDc4D>at5D6f=^*0B2NKA_k1A+k3+`WlhB>DP|z1ZO{dp*3?vY)J#TDFbAYzS+$@Qmpor)39!zk5|!UruUbQC?97#Nug7%mFH#S{}4N?jA+ Ucr3sV62cF{e>Zfil)B#r0JoGr-~a#s diff --git a/requirements.txt b/requirements.txt index 9c2f7b9..37bf8a9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,6 +3,7 @@ astunparse==1.6.3 cachetools==4.2.1 certifi==2020.12.5 chardet==4.0.0 +cycler==0.10.0 flatbuffers==1.12 gast==0.4.0 google-auth==1.29.0 @@ -15,14 +16,18 @@ joblib==1.0.1 kaggle==1.5.12 keras-nightly==2.5.0.dev2021032900 Keras-Preprocessing==1.1.2 +kiwisolver==1.3.1 Markdown==3.3.4 +matplotlib==3.4.2 numpy==1.19.5 oauthlib==3.1.0 opt-einsum==3.3.0 pandas==1.2.4 +Pillow==8.2.0 protobuf==3.15.8 pyasn1==0.4.8 pyasn1-modules==0.2.8 +pyparsing==2.4.7 python-dateutil==2.8.1 python-slugify==4.0.1 pytz==2021.1 diff --git a/results.txt b/results.txt deleted file mode 100644 index 9a9dc10..0000000 --- a/results.txt +++ /dev/null @@ -1,331 +0,0 @@ -0.5936598 -0.5849244 -0.76666903 -0.67934513 -0.64723533 -0.70146203 -0.6212848 -0.69352806 -0.71430266 -0.6349592 -0.6037227 -0.62602526 -0.716088 -0.6527825 -0.61927134 -0.6208715 -0.5705818 -0.5874928 -0.6404664 -0.58791584 -0.67543894 -0.62167656 -0.6206067 -0.64806134 -0.5552458 -0.75341594 -0.6072247 -0.6813532 -0.58791584 -0.60726017 -0.6250376 -0.62341076 -0.5916721 -0.73439735 -0.70303845 -0.6799106 -0.6091962 -0.61927134 -0.8370657 -0.61847275 -0.62586755 -0.68109375 -0.5506313 -0.54138035 -0.59432256 -0.5910602 -0.5725273 -0.61110884 -0.6139354 -0.698549 -0.6325473 -0.6033801 -0.63960016 -0.6930497 -0.6141507 -0.690398 -0.6700437 -0.54408246 -0.54744244 -0.67295927 -0.5979732 -0.67771566 -0.6260898 -0.6237586 -0.6182915 -0.5431411 -0.6237045 -0.56352425 -0.5980723 -0.7263526 -0.61543685 -0.6306595 -0.6136954 -0.6077196 -0.54555225 -0.6265953 -0.6129655 -0.6964393 -0.5952996 -0.76597196 -0.612132 -0.7141346 -0.61887026 -0.62167656 -0.78501934 -0.5870993 -0.622163 -0.7269425 -0.6047483 -0.738512 -0.62428063 -0.5981832 -0.6053737 -0.57737106 -0.6236219 -0.66317254 -0.57937706 -0.7312876 -0.6494799 -0.63968897 -0.5651109 -0.6759594 -0.5775144 -0.5936598 -0.63960016 -0.58682525 -0.71019185 -0.56100094 -0.67674595 -0.6096024 -0.69002897 -0.6200595 -0.57937706 -0.7399035 -0.6408503 -0.6944639 -0.61505663 -0.65129274 -0.62243 -0.60202354 -0.58697325 -0.6366977 -0.6581801 -0.5887744 -0.64327353 -0.5775144 -0.600708 -0.7870045 -0.66495174 -0.73288137 -0.6411598 -0.5922716 -0.82116383 -0.6830768 -0.5775144 -0.5493086 -0.60465336 -0.71464497 -0.63086146 -0.8296491 -0.6182472 -0.5995659 -0.6235519 -0.55489665 -0.6356955 -0.57629323 -0.6342664 -0.64431417 -0.60523593 -0.65745866 -0.684063 -0.7090692 -0.551341 -0.6960265 -0.6134735 -0.6319828 -0.69399494 -0.6586382 -0.6184454 -0.579377 -0.5624325 -0.6291094 -0.5526188 -0.6200053 -0.67691404 -0.64806134 -0.71236795 -0.5982099 -0.7223163 -0.70254266 -0.5769756 -0.6886634 -0.5427406 -0.6079933 -0.69164056 -0.7077326 -0.719109 -0.66267097 -0.579265 -0.69516224 -0.5506313 -0.61759067 -0.62851924 -0.5809279 -0.7018177 -0.7282298 -0.6892376 -0.72701484 -0.5552458 -0.62603444 -0.6191902 -0.64947087 -0.5757011 -0.61934066 -0.6420203 -0.68608767 -0.6914434 -0.5648086 -0.5936598 -0.62404615 -0.58697325 -0.68826014 -0.5743765 -0.62311804 -0.5673747 -0.6645754 -0.6006698 -0.6139312 -0.605672 -0.61527056 -0.61543274 -0.6497899 -0.6445152 -0.6175213 -0.613054 -0.63025105 -0.66208804 -0.56561863 -0.60712475 -0.5769756 -0.6977379 -0.7078162 -0.6081246 -0.6097158 -0.6237586 -0.5988606 -0.6206067 -0.6527825 -0.66423184 -0.6055651 -0.6602301 -0.68199044 -0.5838982 -0.6191426 -0.5835939 -0.5699177 -0.59172297 -0.61360157 -0.5893885 -0.6019349 -0.6636439 -0.6308284 -0.61177546 -0.60210186 -0.6817741 -0.78398675 -0.6113895 -0.6719309 -0.600708 -0.7056101 -0.6404664 -0.57761484 -0.5705818 -0.64431417 -0.6320444 -0.7149821 -0.66350126 -0.6117868 -0.6053978 -0.65883034 -0.6160903 -0.62467444 -0.6141507 -0.56460583 -0.6075608 -0.71549106 -0.59031665 -0.5947179 -0.5578261 -0.68199044 -0.6732133 -0.58061934 -0.75385326 -0.63099474 -0.55258214 -0.6357683 -0.6386257 -0.6683411 -0.617758 -0.8129497 -0.6143774 -0.61251193 -0.67745715 -0.6147938 -0.7365375 -0.6236495 -0.6806918 -0.6894972 -0.6269105 -0.6205633 -0.66388756 -0.6088129 -0.6154119 -0.62330747 -0.62925434 -0.6778992 -0.5844303 -0.6399225 -0.6335639 -0.66535574 -0.54796815 -0.6119701 -0.61533546 -0.72435665 -0.69239396 -0.70170265 -0.6722494 -0.69742507 -0.6009209 -0.615307 -0.6636749 -0.5761081 -0.6136954 -0.57523835 -0.6359734 -0.60489464 -0.6540913 -0.7366513 -0.58649015 -0.6129386 -0.5581885 -0.6212848 -0.5769756 -0.61741394 -0.57121605 -0.6268614 -0.6249659 -0.6359734 -0.660387 -0.7373885 -0.7026211 diff --git a/training.py b/training.py index 2c722d6..1cf28f9 100644 --- a/training.py +++ b/training.py @@ -11,7 +11,9 @@ from tensorflow.keras.layers.experimental import preprocessing arguments = sys.argv[1:] -activation_func = [command.split('=')[1] for command in arguments if command.split('=')[0] == '--activation_func'] +verbose = [command.split('=')[1] for command in arguments if command.split('=')[0] == 'verbose'] +epochs = [command.split('=')[1] for command in arguments if command.split('=')[0] == 'epochs'] + pd.set_option("display.max_columns", None) @@ -32,15 +34,18 @@ else: model = keras.Sequential([ keras.Input(shape=(len(columns_to_use),)), normalizer, - layers.Dense(30, activation='relu' if len(activation_func) == 0 else activation_func[0]), - layers.Dense(10, activation='relu' if len(activation_func) == 0 else activation_func[0]), - layers.Dense(25, activation='relu' if len(activation_func) == 0 else activation_func[0]), + layers.Dense(30, activation='relu'), + layers.Dense(10, activation='relu'), + layers.Dense(25, activation='relu'), layers.Dense(1) ]) model.compile(loss='mean_absolute_error', - optimizer=tf.keras.optimizers.Adam(0.001)) + optimizer=tf.keras.optimizers.Adam(0.001), + metrics=[tf.keras.metrics.RootMeanSquaredError()]) - model.fit(train_X, train_Y, verbose=0, epochs=100) + verbose = 0 if len(verbose) == 0 else verbose[0] + epochs = 100 if len(epochs) == 0 else epochs[0] + model.fit(train_X, train_Y, verbose=verbose, epochs=epochs) - model.save('linear_regression') \ No newline at end of file + model.save('linear_regression.h5') \ No newline at end of file