plotting validation error
This commit is contained in:
		| @ -11,7 +11,16 @@ | |||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|    "cell_type": "code", |    "cell_type": "code", | ||||||
|    "execution_count": 1, |    "execution_count": 14, | ||||||
|  |    "metadata": {}, | ||||||
|  |    "outputs": [], | ||||||
|  |    "source": [ | ||||||
|  |     "%matplotlib inline" | ||||||
|  |    ] | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |    "cell_type": "code", | ||||||
|  |    "execution_count": 2, | ||||||
|    "metadata": {}, |    "metadata": {}, | ||||||
|    "outputs": [ |    "outputs": [ | ||||||
|     { |     { | ||||||
| @ -60,7 +69,7 @@ | |||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|    "cell_type": "code", |    "cell_type": "code", | ||||||
|    "execution_count": 2, |    "execution_count": 3, | ||||||
|    "metadata": {}, |    "metadata": {}, | ||||||
|    "outputs": [], |    "outputs": [], | ||||||
|    "source": [ |    "source": [ | ||||||
| @ -115,7 +124,7 @@ | |||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|    "cell_type": "code", |    "cell_type": "code", | ||||||
|    "execution_count": 3, |    "execution_count": 4, | ||||||
|    "metadata": {}, |    "metadata": {}, | ||||||
|    "outputs": [ |    "outputs": [ | ||||||
|     { |     { | ||||||
| @ -145,7 +154,7 @@ | |||||||
|     { |     { | ||||||
|      "data": { |      "data": { | ||||||
|       "application/vnd.jupyter.widget-view+json": { |       "application/vnd.jupyter.widget-view+json": { | ||||||
|        "model_id": "ef207b9276fc4a84b46053e7d979f2a2", |        "model_id": "3e7d23dfb4b24f888d95bbd416565026", | ||||||
|        "version_major": 2, |        "version_major": 2, | ||||||
|        "version_minor": 0 |        "version_minor": 0 | ||||||
|       }, |       }, | ||||||
| @ -271,7 +280,7 @@ | |||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|    "cell_type": "code", |    "cell_type": "code", | ||||||
|    "execution_count": 4, |    "execution_count": 5, | ||||||
|    "metadata": {}, |    "metadata": {}, | ||||||
|    "outputs": [], |    "outputs": [], | ||||||
|    "source": [ |    "source": [ | ||||||
| @ -289,7 +298,7 @@ | |||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|    "cell_type": "code", |    "cell_type": "code", | ||||||
|    "execution_count": 5, |    "execution_count": 6, | ||||||
|    "metadata": {}, |    "metadata": {}, | ||||||
|    "outputs": [], |    "outputs": [], | ||||||
|    "source": [ |    "source": [ | ||||||
| @ -377,7 +386,7 @@ | |||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|    "cell_type": "code", |    "cell_type": "code", | ||||||
|    "execution_count": 6, |    "execution_count": 7, | ||||||
|    "metadata": {}, |    "metadata": {}, | ||||||
|    "outputs": [], |    "outputs": [], | ||||||
|    "source": [ |    "source": [ | ||||||
| @ -401,7 +410,7 @@ | |||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|    "cell_type": "code", |    "cell_type": "code", | ||||||
|    "execution_count": 7, |    "execution_count": 8, | ||||||
|    "metadata": {}, |    "metadata": {}, | ||||||
|    "outputs": [], |    "outputs": [], | ||||||
|    "source": [ |    "source": [ | ||||||
| @ -478,7 +487,7 @@ | |||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|    "cell_type": "code", |    "cell_type": "code", | ||||||
|    "execution_count": 8, |    "execution_count": 9, | ||||||
|    "metadata": {}, |    "metadata": {}, | ||||||
|    "outputs": [], |    "outputs": [], | ||||||
|    "source": [ |    "source": [ | ||||||
| @ -522,7 +531,7 @@ | |||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|    "cell_type": "code", |    "cell_type": "code", | ||||||
|    "execution_count": 9, |    "execution_count": 10, | ||||||
|    "metadata": {}, |    "metadata": {}, | ||||||
|    "outputs": [], |    "outputs": [], | ||||||
|    "source": [ |    "source": [ | ||||||
| @ -598,7 +607,7 @@ | |||||||
|     "            mp(\"**layers:** \")\n", |     "            mp(\"**layers:** \")\n", | ||||||
|     "            jp(layers, headers=['#neurons', 'activation_func'])\n", |     "            jp(layers, headers=['#neurons', 'activation_func'])\n", | ||||||
|     "\n", |     "\n", | ||||||
|     "            pm = stl.pipeline_manager.create_keras_pipeline_with_vectorizer(vectorizer, layers=layers, sdm=sdm)\n", |     "            pm = stl.pipeline_manager.create_keras_pipeline_with_vectorizer(vectorizer, layers=layers, sdm=sdm, fit_vectorizer=not shown_widgets[\"d2v_use_pretrained\"].value)\n", | ||||||
|     "\n", |     "\n", | ||||||
|     "def save_classifier(b):\n", |     "def save_classifier(b):\n", | ||||||
|     "    global sdm\n", |     "    global sdm\n", | ||||||
| @ -659,7 +668,7 @@ | |||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|    "cell_type": "code", |    "cell_type": "code", | ||||||
|    "execution_count": 10, |    "execution_count": 11, | ||||||
|    "metadata": {}, |    "metadata": {}, | ||||||
|    "outputs": [], |    "outputs": [], | ||||||
|    "source": [ |    "source": [ | ||||||
| @ -685,7 +694,7 @@ | |||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|    "cell_type": "code", |    "cell_type": "code", | ||||||
|    "execution_count": 11, |    "execution_count": 12, | ||||||
|    "metadata": {}, |    "metadata": {}, | ||||||
|    "outputs": [], |    "outputs": [], | ||||||
|    "source": [ |    "source": [ | ||||||
| @ -694,7 +703,7 @@ | |||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|    "cell_type": "code", |    "cell_type": "code", | ||||||
|    "execution_count": 12, |    "execution_count": 13, | ||||||
|    "metadata": {}, |    "metadata": {}, | ||||||
|    "outputs": [ |    "outputs": [ | ||||||
|     { |     { | ||||||
| @ -704,7 +713,7 @@ | |||||||
|      "traceback": [ |      "traceback": [ | ||||||
|       "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", |       "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | ||||||
|       "\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)", |       "\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)", | ||||||
|       "\u001b[0;32m<ipython-input-12-beaf1df9153b>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpipeline\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnamed_steps\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'vectorizer'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtransform\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"I am sad\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", |       "\u001b[0;32m<ipython-input-13-beaf1df9153b>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpipeline\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnamed_steps\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'vectorizer'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtransform\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"I am sad\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", | ||||||
|       "\u001b[0;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'pipeline'" |       "\u001b[0;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'pipeline'" | ||||||
|      ] |      ] | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -25,6 +25,7 @@ import operator | |||||||
| from sklearn.pipeline import Pipeline | from sklearn.pipeline import Pipeline | ||||||
| import json | import json | ||||||
| import datetime | import datetime | ||||||
|  | import matplotlib.pyplot as plt | ||||||
|  |  | ||||||
| nltk.download('punkt') | nltk.download('punkt') | ||||||
| nltk.download('averaged_perceptron_tagger') | nltk.download('averaged_perceptron_tagger') | ||||||
| @ -657,6 +658,8 @@ class trainer(object): | |||||||
|         """constructor""" |         """constructor""" | ||||||
|         self.sdm = sdm |         self.sdm = sdm | ||||||
|         self.pm = pm |         self.pm = pm | ||||||
|  |         self.acc = [] | ||||||
|  |         self.val = [] | ||||||
|      |      | ||||||
|     def fit(self, max_size=1000000, disabled_fit_steps=['vectorizer'], keras_batch_fitting_layer=['keras_model'], batch_size=None, n_epochs=1, progress_callback=None): |     def fit(self, max_size=1000000, disabled_fit_steps=['vectorizer'], keras_batch_fitting_layer=['keras_model'], batch_size=None, n_epochs=1, progress_callback=None): | ||||||
|         """ |         """ | ||||||
| @ -691,12 +694,19 @@ class trainer(object): | |||||||
|                 named_steps[k].fit = lambda X, y: named_steps[k].train_on_batch(to_dense_if_sparse(X), y) # ← why has keras no sparse support on batch progressing!?!?! |                 named_steps[k].fit = lambda X, y: named_steps[k].train_on_batch(to_dense_if_sparse(X), y) # ← why has keras no sparse support on batch progressing!?!?! | ||||||
|              |              | ||||||
|         if batch_size is None: |         if batch_size is None: | ||||||
|  |             self.acc = [] | ||||||
|  |             self.val = [] | ||||||
|             for e in range(n_epochs): |             for e in range(n_epochs): | ||||||
|                 print("epoch", e) |                 print("epoch", e) | ||||||
|                 self.pm.fit(X = self.sdm.X[:max_size], y = self.sdm.y[:max_size]) |                 self.pm.fit(X = self.sdm.X[:max_size], y = self.sdm.y[:max_size]) | ||||||
|                 pred, yt = self.test() |                 pred, yt = self.test() | ||||||
|                 mean_squared_error = ((pred - yt)**2).mean(axis=0) |                 mean_squared_error = ((pred - yt)**2).mean(axis=0) | ||||||
|                 print("#" + str(e) + ": validation loss: ", mean_squared_error, "scalar: ", np.mean(mean_squared_error)) |                 print("#" + str(e) + ": validation loss: ", mean_squared_error, "scalar: ", np.mean(mean_squared_error)) | ||||||
|  |                 self.val.append(np.mean(mean_squared_error)) | ||||||
|  |             plt.figure(figsize=(10,5)) | ||||||
|  |             plt.plot(self.val) | ||||||
|  |             plt.savefig("val_error" + str(datetime.datetime.now()) + ".png", bbox_inches='tight') | ||||||
|  |             plt.show() | ||||||
|         else: |         else: | ||||||
|             n = len(self.sdm.X) // batch_size |             n = len(self.sdm.X) // batch_size | ||||||
|             for i in range(n_epochs): |             for i in range(n_epochs): | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user