{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"Άσκηση 12 - Αυτοκωδικοποιητές.ipynb","provenance":[],"authorship_tag":"ABX9TyPZQsNwGmnRnxOnWm3DEQdl"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["# Άσκηση 12 - Αυτοκωδικοποιητές"],"metadata":{"id":"XUYD9Eb-V4V4"}},{"cell_type":"markdown","source":["## 1. Εισαγωγή"],"metadata":{"id":"0o_C1YfsV7XF"}},{"cell_type":"markdown","source":["### 1.α. Βιβλιοθήκες"],"metadata":{"id":"GuX4wzlsWJc3"}},{"cell_type":"code","source":["from tensorflow.keras import regularizers\n","from tensorflow.keras.datasets import mnist\n","from tensorflow.keras.layers import Input, Dense\n","from tensorflow.keras.models import Sequential\n","from sklearn.preprocessing import MinMaxScaler\n","from sklearn.metrics.pairwise import cosine_similarity\n","\n","import matplotlib.pyplot as plt\n","import numpy as np\n","import pandas as pd\n","\n","# Θέτουμε σπορά (seed) στη γεννήτρια ψευδο-τυχαίων αριθμών για να λάβουμε\n","# ίδια αποτελέσματα\n","\n","np.random.seed(2022)"],"metadata":{"id":"eyWBldddWDOH"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["### 1.β. Βοηθητικές συναρτήσεις"],"metadata":{"id":"pDjitfzyWaMK"}},{"cell_type":"code","source":["def compare_digits(test, decoded, n=10):\n"," plt.figure(figsize=(20, 4))\n"," for i in range(n):\n"," # display original\n"," ax = plt.subplot(2, n, i + 1)\n"," plt.imshow(test[i].reshape(28, 28))\n"," plt.gray()\n"," ax.get_xaxis().set_visible(False)\n"," ax.get_yaxis().set_visible(False)\n","\n"," # display reconstruction\n"," ax = plt.subplot(2, n, i + 1 + n)\n"," plt.imshow(decoded[i].reshape(28, 28))\n"," plt.gray()\n"," ax.get_xaxis().set_visible(False)\n"," ax.get_yaxis().set_visible(False)\n"," plt.show()\n"," \n"," \n","def display_digits(data, n=10):\n"," plt.figure(figsize=(20, 2))\n"," for i in range(n):\n"," ax = plt.subplot(1, n, i + 1)\n"," plt.imshow(data[i].reshape(28, 28))\n"," plt.gray()\n"," ax.get_xaxis().set_visible(False)\n"," ax.get_yaxis().set_visible(False)\n"," plt.show()"],"metadata":{"id":"K__51EpNWgfZ"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["### 1.γ. Δεδομένα"],"metadata":{"id":"QRMXTfHsWOs4"}},{"cell_type":"code","source":["(x_train, _), (x_test, _) = mnist.load_data()\n","\n","x_train = x_train.reshape((len(x_train), np.prod(x_train.shape[1:])))\n","x_test = x_test.reshape((len(x_test), np.prod(x_test.shape[1:])))\n","\n","scaler = MinMaxScaler()\n","x_train = scaler.fit_transform(x_train)\n","x_test = scaler.fit_transform(x_test)\n","\n","print(x_train.shape)\n","print(x_test.shape)"],"metadata":{"id":"gE-pw6QBWDV7"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## 2. Υποπλήρης Αυτοκωδικοποιητής\n","\n","Βάση εργασίας αποτελεί ο υποπλήρης αυτοκωδικοποιητής που δείξαμε στο εργαστήριο"],"metadata":{"id":"VkI2cDP4WusC"}},{"cell_type":"markdown","source":["### 2.1. Αντιστρέψετε τις συναρτήσεις (απο)κωδικοποίησης. Τι παρατηρείτε;\n"],"metadata":{"id":"caHTDwzcXADX"}},{"cell_type":"code","source":[""],"metadata":{"id":"jvhsjSIgW-_o"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":[""],"metadata":{"id":"zYtLr1twXLVN"}},{"cell_type":"markdown","source":["### 2.2. Χρησιμοποιείστε την ίδια συνάρτηση κωδικοποίησης και αποκωδικοποίησης (λχ τη relu). Τι παρατηρείτε;"],"metadata":{"id":"YOY6fFK1XLpu"}},{"cell_type":"code","source":[""],"metadata":{"id":"f0hFjvT1XO8E"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":[""],"metadata":{"id":"7kBqcCHpXUtq"}},{"cell_type":"markdown","source":["## 3. Αραιός Αυτοκωδικοποιητής\n","\n","Βάση εργασίας αποτελεί ο αραιός αυτοκωδικοποιητής που δείξαμε στο εργαστήριο"],"metadata":{"id":"4E9T9I8YXyJW"}},{"cell_type":"markdown","source":["### 3.1. Δοκιμάστε να αυξήσετε το βάρος της ποινής αραιότητας. Τι παρατηρείτε;"],"metadata":{"id":"kGwWOwsIX-IO"}},{"cell_type":"code","source":[""],"metadata":{"id":"OVtNaAaoYGYX"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":[""],"metadata":{"id":"nQlsoAHvYHFZ"}},{"cell_type":"markdown","source":["## 4. Αυτοκωδικοποιητής απαλοιφής θορύβου\n","\n","Βάση εργασίας αποτελεί ο αραιός αυτοκωδικοποιητής που δείξαμε στο εργαστήριο."],"metadata":{"id":"JDSzQ1ZFYJ60"}},{"cell_type":"markdown","source":["### 4.1. Δοκομάστε να μεταβάλλετε (αυξήσετε/μειώσετε) το συντελεστή θορύβου. Τι παρατηρείτε;"],"metadata":{"id":"G62OTVTvYuAF"}},{"cell_type":"code","source":[""],"metadata":{"id":"lpFaMpNwYo6F"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":[""],"metadata":{"id":"1bDYJAD5Y1Px"}},{"cell_type":"markdown","source":["## 5. Βαθύς αυτοκωδικοποιητής\n","\n","Βάση εργασίας αποτελεί ο βαθύς αυτοκωδικοποιητής που δείξαμε στο εργαστήριο."],"metadata":{"id":"EHREpqKEY1zf"}},{"cell_type":"markdown","source":["### 5.1. Δοκιμάστε να χρησιμοποιήσετε διαφορετικές συναρτήσεις στο επίπεδο αποκωδικοποίησης. Τι παρατηρείτε;"],"metadata":{"id":"JXJvzjwZZGP5"}},{"cell_type":"code","source":[""],"metadata":{"id":"J20qKJQmZAA_"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":[""],"metadata":{"id":"RZlpMhpVZAkn"}}]}