Skip to content

Instantly share code, notes, and snippets.

@Melihemin
Last active April 20, 2021 20:18
Show Gist options
  • Save Melihemin/7ebb2743ec60a3be0e25be00cd4c8d03 to your computer and use it in GitHub Desktop.
Save Melihemin/7ebb2743ec60a3be0e25be00cd4c8d03 to your computer and use it in GitHub Desktop.
Gorultu isleme
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "GürültüGiderme.ipynb",
"provenance": [],
"collapsed_sections": [],
"authorship_tag": "ABX9TyPWQJtqVFYaDWEPh01/qm8t",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/Melihemin/7ebb2743ec60a3be0e25be00cd4c8d03/g-r-lt-giderme.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "B4FUcXJdov-N"
},
"source": [
"from keras.layers import Input, Dense, Conv2D, MaxPooling2D, UpSampling2D\n",
"from keras.models import Model\n",
"from keras.callbacks import TensorBoard\n",
"from keras.datasets import mnist\n",
"import numpy as np\n",
"from keras import backend as K\n",
"import matplotlib.pyplot as plt"
],
"execution_count": 1,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "N1l5hxE-phL5"
},
"source": [
"(x_train, _), (x_test, _) = mnist.load_data()"
],
"execution_count": 2,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "Et--MraAphFu"
},
"source": [
"x_train = x_train.astype('float32') / 255\n",
"x_test = x_test.astype('float32') / 255\n",
"\n",
"x_train = np.reshape(x_train, (len(x_train), 28, 28, 1))\n",
"x_test = np.reshape(x_test, (len(x_test), 28, 28, 1))"
],
"execution_count": 3,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "OnMALARapgtF",
"outputId": "569c9949-6f3d-4047-e4ab-9564be147c76"
},
"source": [
"print(x_train.shape)\n",
"print(x_test.shape)"
],
"execution_count": 4,
"outputs": [
{
"output_type": "stream",
"text": [
"(60000, 28, 28, 1)\n",
"(10000, 28, 28, 1)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "-rJ6qq7otvIz"
},
"source": [
"noise_factor = 0.5\n",
"x_train_noisy = x_train + noise_factor * np.random.normal(loc= 0.0, scale= 1.0, size = x_train.shape)\n",
"x_test_noisy = x_test + noise_factor * np.random.normal(loc= 0.0, scale=1.0, size=x_test.shape)\n",
"\n",
"x_train_noisy = np.clip(x_train_noisy, 0., 1.)\n",
"x_test_noisy = np.clip(x_test_noisy, 0., 1.)"
],
"execution_count": 8,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 87
},
"id": "4WCEic9StvGh",
"outputId": "7cf9ba68-1761-454d-a465-9a468e727015"
},
"source": [
"%matplotlib inline\n",
"\n",
"n = 10\n",
"\n",
"plt.figure(figsize = (25,4))\n",
"\n",
"for i in range(n):\n",
" ax = plt.subplot(2, n, i+1)\n",
" plt.imshow(x_test_noisy[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",
"print('Images')"
],
"execution_count": 9,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1800x288 with 10 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "stream",
"text": [
"Images\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "aqSeREoTtvES"
},
"source": [
"input_img = Input(shape = (28,28,1))\n",
"\n",
"x = Conv2D(32, (3,3), activation='relu', padding='same')(input_img)\n",
"\n",
"x = MaxPooling2D((2,2), padding='same')(x)\n",
"\n",
"x = Conv2D(32, (3,3), activation='relu', padding='same')(x)\n",
"\n",
"encoded = MaxPooling2D((2,2), padding='same')(x)\n",
"\n",
"\n",
"# (7,7,32)\n"
],
"execution_count": 10,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "EKhMDJZptvBt"
},
"source": [
"x = Conv2D(32, (3,3), activation='relu', padding='same')(encoded)\n",
"\n",
"x = UpSampling2D((2,2))(x)\n",
"\n",
"x = Conv2D(32, (3,3), activation='relu', padding='same')(x)\n",
"\n",
"x = UpSampling2D((2,2))(x)\n",
"\n",
"decoded = Conv2D(1, (3,3), activation='sigmoid', padding='same')(x)"
],
"execution_count": 11,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "a9zvFvnztu2j"
},
"source": [
"autoencoder = Model(input_img, decoded)\n",
"autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy', metrics=['accuracy'])"
],
"execution_count": 14,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "lgFuCkxn3NcK",
"outputId": "9eb22afd-953c-4bef-f27b-cc999d46bd00"
},
"source": [
"autoencoder.fit(x_train_noisy, x_train,\n",
" epochs=100,\n",
" batch_size=128,\n",
" shuffle=True,\n",
" validation_data=(x_test_noisy, x_test),\n",
" callbacks=[TensorBoard(log_dir='/tmp/tb', histogram_freq=0, write_graph=False)])\n",
"\n",
"decoded_imgs = autoencoder.predict(x_test)"
],
"execution_count": 15,
"outputs": [
{
"output_type": "stream",
"text": [
"Epoch 1/100\n",
"469/469 [==============================] - 5s 9ms/step - loss: 0.2132 - accuracy: 0.7992 - val_loss: 0.2095 - val_accuracy: 0.7984\n",
"Epoch 2/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.2090 - accuracy: 0.7994 - val_loss: 0.2054 - val_accuracy: 0.7988\n",
"Epoch 3/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.2049 - accuracy: 0.8002 - val_loss: 0.2016 - val_accuracy: 0.7991\n",
"Epoch 4/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.2014 - accuracy: 0.8005 - val_loss: 0.1981 - val_accuracy: 0.7994\n",
"Epoch 5/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1980 - accuracy: 0.8006 - val_loss: 0.1947 - val_accuracy: 0.7999\n",
"Epoch 6/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1949 - accuracy: 0.8008 - val_loss: 0.1917 - val_accuracy: 0.8001\n",
"Epoch 7/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1918 - accuracy: 0.8014 - val_loss: 0.1889 - val_accuracy: 0.8004\n",
"Epoch 8/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1890 - accuracy: 0.8013 - val_loss: 0.1863 - val_accuracy: 0.8008\n",
"Epoch 9/100\n",
"469/469 [==============================] - 4s 7ms/step - loss: 0.1865 - accuracy: 0.8016 - val_loss: 0.1840 - val_accuracy: 0.8011\n",
"Epoch 10/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1843 - accuracy: 0.8023 - val_loss: 0.1818 - val_accuracy: 0.8012\n",
"Epoch 11/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1822 - accuracy: 0.8024 - val_loss: 0.1798 - val_accuracy: 0.8014\n",
"Epoch 12/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1807 - accuracy: 0.8017 - val_loss: 0.1780 - val_accuracy: 0.8016\n",
"Epoch 13/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1782 - accuracy: 0.8030 - val_loss: 0.1763 - val_accuracy: 0.8016\n",
"Epoch 14/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1770 - accuracy: 0.8026 - val_loss: 0.1748 - val_accuracy: 0.8019\n",
"Epoch 15/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1755 - accuracy: 0.8028 - val_loss: 0.1735 - val_accuracy: 0.8020\n",
"Epoch 16/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1740 - accuracy: 0.8031 - val_loss: 0.1722 - val_accuracy: 0.8021\n",
"Epoch 17/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1728 - accuracy: 0.8030 - val_loss: 0.1710 - val_accuracy: 0.8022\n",
"Epoch 18/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1719 - accuracy: 0.8031 - val_loss: 0.1699 - val_accuracy: 0.8023\n",
"Epoch 19/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1707 - accuracy: 0.8033 - val_loss: 0.1689 - val_accuracy: 0.8024\n",
"Epoch 20/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1701 - accuracy: 0.8029 - val_loss: 0.1680 - val_accuracy: 0.8027\n",
"Epoch 21/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1690 - accuracy: 0.8030 - val_loss: 0.1671 - val_accuracy: 0.8025\n",
"Epoch 22/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1680 - accuracy: 0.8033 - val_loss: 0.1663 - val_accuracy: 0.8027\n",
"Epoch 23/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1672 - accuracy: 0.8037 - val_loss: 0.1655 - val_accuracy: 0.8028\n",
"Epoch 24/100\n",
"469/469 [==============================] - 3s 7ms/step - loss: 0.1666 - accuracy: 0.8032 - val_loss: 0.1647 - val_accuracy: 0.8028\n",
"Epoch 25/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1660 - accuracy: 0.8034 - val_loss: 0.1640 - val_accuracy: 0.8030\n",
"Epoch 26/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1649 - accuracy: 0.8038 - val_loss: 0.1633 - val_accuracy: 0.8029\n",
"Epoch 27/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1642 - accuracy: 0.8042 - val_loss: 0.1627 - val_accuracy: 0.8032\n",
"Epoch 28/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1635 - accuracy: 0.8043 - val_loss: 0.1620 - val_accuracy: 0.8031\n",
"Epoch 29/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1630 - accuracy: 0.8039 - val_loss: 0.1614 - val_accuracy: 0.8033\n",
"Epoch 30/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1627 - accuracy: 0.8038 - val_loss: 0.1608 - val_accuracy: 0.8034\n",
"Epoch 31/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1616 - accuracy: 0.8043 - val_loss: 0.1602 - val_accuracy: 0.8033\n",
"Epoch 32/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1613 - accuracy: 0.8040 - val_loss: 0.1597 - val_accuracy: 0.8035\n",
"Epoch 33/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1607 - accuracy: 0.8043 - val_loss: 0.1591 - val_accuracy: 0.8035\n",
"Epoch 34/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1602 - accuracy: 0.8044 - val_loss: 0.1586 - val_accuracy: 0.8036\n",
"Epoch 35/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1598 - accuracy: 0.8040 - val_loss: 0.1581 - val_accuracy: 0.8034\n",
"Epoch 36/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1593 - accuracy: 0.8042 - val_loss: 0.1576 - val_accuracy: 0.8035\n",
"Epoch 37/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1585 - accuracy: 0.8047 - val_loss: 0.1571 - val_accuracy: 0.8037\n",
"Epoch 38/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1583 - accuracy: 0.8045 - val_loss: 0.1566 - val_accuracy: 0.8039\n",
"Epoch 39/100\n",
"469/469 [==============================] - 4s 7ms/step - loss: 0.1579 - accuracy: 0.8042 - val_loss: 0.1562 - val_accuracy: 0.8038\n",
"Epoch 40/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1572 - accuracy: 0.8047 - val_loss: 0.1557 - val_accuracy: 0.8039\n",
"Epoch 41/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1566 - accuracy: 0.8048 - val_loss: 0.1553 - val_accuracy: 0.8038\n",
"Epoch 42/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1566 - accuracy: 0.8048 - val_loss: 0.1548 - val_accuracy: 0.8039\n",
"Epoch 43/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1560 - accuracy: 0.8047 - val_loss: 0.1544 - val_accuracy: 0.8040\n",
"Epoch 44/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1557 - accuracy: 0.8047 - val_loss: 0.1540 - val_accuracy: 0.8042\n",
"Epoch 45/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1552 - accuracy: 0.8048 - val_loss: 0.1536 - val_accuracy: 0.8041\n",
"Epoch 46/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1546 - accuracy: 0.8050 - val_loss: 0.1531 - val_accuracy: 0.8042\n",
"Epoch 47/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1542 - accuracy: 0.8054 - val_loss: 0.1527 - val_accuracy: 0.8044\n",
"Epoch 48/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1541 - accuracy: 0.8049 - val_loss: 0.1524 - val_accuracy: 0.8044\n",
"Epoch 49/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1534 - accuracy: 0.8052 - val_loss: 0.1520 - val_accuracy: 0.8044\n",
"Epoch 50/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1532 - accuracy: 0.8052 - val_loss: 0.1516 - val_accuracy: 0.8043\n",
"Epoch 51/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1526 - accuracy: 0.8055 - val_loss: 0.1512 - val_accuracy: 0.8044\n",
"Epoch 52/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1525 - accuracy: 0.8055 - val_loss: 0.1509 - val_accuracy: 0.8045\n",
"Epoch 53/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1522 - accuracy: 0.8049 - val_loss: 0.1505 - val_accuracy: 0.8047\n",
"Epoch 54/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1515 - accuracy: 0.8054 - val_loss: 0.1501 - val_accuracy: 0.8046\n",
"Epoch 55/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1512 - accuracy: 0.8057 - val_loss: 0.1498 - val_accuracy: 0.8048\n",
"Epoch 56/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1510 - accuracy: 0.8055 - val_loss: 0.1495 - val_accuracy: 0.8046\n",
"Epoch 57/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1509 - accuracy: 0.8055 - val_loss: 0.1491 - val_accuracy: 0.8048\n",
"Epoch 58/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1503 - accuracy: 0.8055 - val_loss: 0.1488 - val_accuracy: 0.8048\n",
"Epoch 59/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1501 - accuracy: 0.8055 - val_loss: 0.1485 - val_accuracy: 0.8049\n",
"Epoch 60/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1497 - accuracy: 0.8055 - val_loss: 0.1481 - val_accuracy: 0.8050\n",
"Epoch 61/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1492 - accuracy: 0.8058 - val_loss: 0.1478 - val_accuracy: 0.8051\n",
"Epoch 62/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1494 - accuracy: 0.8055 - val_loss: 0.1475 - val_accuracy: 0.8051\n",
"Epoch 63/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1490 - accuracy: 0.8057 - val_loss: 0.1472 - val_accuracy: 0.8051\n",
"Epoch 64/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1485 - accuracy: 0.8057 - val_loss: 0.1469 - val_accuracy: 0.8052\n",
"Epoch 65/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1481 - accuracy: 0.8060 - val_loss: 0.1466 - val_accuracy: 0.8052\n",
"Epoch 66/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1477 - accuracy: 0.8060 - val_loss: 0.1463 - val_accuracy: 0.8051\n",
"Epoch 67/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1472 - accuracy: 0.8062 - val_loss: 0.1460 - val_accuracy: 0.8053\n",
"Epoch 68/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1472 - accuracy: 0.8061 - val_loss: 0.1457 - val_accuracy: 0.8053\n",
"Epoch 69/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1470 - accuracy: 0.8059 - val_loss: 0.1454 - val_accuracy: 0.8054\n",
"Epoch 70/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1468 - accuracy: 0.8059 - val_loss: 0.1451 - val_accuracy: 0.8054\n",
"Epoch 71/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1468 - accuracy: 0.8058 - val_loss: 0.1449 - val_accuracy: 0.8055\n",
"Epoch 72/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1465 - accuracy: 0.8060 - val_loss: 0.1446 - val_accuracy: 0.8056\n",
"Epoch 73/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1460 - accuracy: 0.8061 - val_loss: 0.1443 - val_accuracy: 0.8054\n",
"Epoch 74/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1455 - accuracy: 0.8063 - val_loss: 0.1440 - val_accuracy: 0.8055\n",
"Epoch 75/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1456 - accuracy: 0.8061 - val_loss: 0.1438 - val_accuracy: 0.8056\n",
"Epoch 76/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1451 - accuracy: 0.8063 - val_loss: 0.1435 - val_accuracy: 0.8056\n",
"Epoch 77/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1448 - accuracy: 0.8063 - val_loss: 0.1432 - val_accuracy: 0.8056\n",
"Epoch 78/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1446 - accuracy: 0.8063 - val_loss: 0.1430 - val_accuracy: 0.8057\n",
"Epoch 79/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1442 - accuracy: 0.8064 - val_loss: 0.1427 - val_accuracy: 0.8058\n",
"Epoch 80/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1439 - accuracy: 0.8066 - val_loss: 0.1424 - val_accuracy: 0.8057\n",
"Epoch 81/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1438 - accuracy: 0.8064 - val_loss: 0.1422 - val_accuracy: 0.8057\n",
"Epoch 82/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1433 - accuracy: 0.8069 - val_loss: 0.1419 - val_accuracy: 0.8058\n",
"Epoch 83/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1434 - accuracy: 0.8062 - val_loss: 0.1417 - val_accuracy: 0.8059\n",
"Epoch 84/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1430 - accuracy: 0.8063 - val_loss: 0.1415 - val_accuracy: 0.8059\n",
"Epoch 85/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1429 - accuracy: 0.8067 - val_loss: 0.1412 - val_accuracy: 0.8059\n",
"Epoch 86/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1424 - accuracy: 0.8068 - val_loss: 0.1410 - val_accuracy: 0.8059\n",
"Epoch 87/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1422 - accuracy: 0.8068 - val_loss: 0.1408 - val_accuracy: 0.8060\n",
"Epoch 88/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1421 - accuracy: 0.8069 - val_loss: 0.1406 - val_accuracy: 0.8061\n",
"Epoch 89/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1417 - accuracy: 0.8071 - val_loss: 0.1404 - val_accuracy: 0.8062\n",
"Epoch 90/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1417 - accuracy: 0.8068 - val_loss: 0.1401 - val_accuracy: 0.8062\n",
"Epoch 91/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1415 - accuracy: 0.8069 - val_loss: 0.1399 - val_accuracy: 0.8062\n",
"Epoch 92/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1411 - accuracy: 0.8071 - val_loss: 0.1397 - val_accuracy: 0.8062\n",
"Epoch 93/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1410 - accuracy: 0.8072 - val_loss: 0.1395 - val_accuracy: 0.8063\n",
"Epoch 94/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1409 - accuracy: 0.8069 - val_loss: 0.1393 - val_accuracy: 0.8063\n",
"Epoch 95/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1408 - accuracy: 0.8069 - val_loss: 0.1391 - val_accuracy: 0.8063\n",
"Epoch 96/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1403 - accuracy: 0.8074 - val_loss: 0.1389 - val_accuracy: 0.8062\n",
"Epoch 97/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1401 - accuracy: 0.8073 - val_loss: 0.1387 - val_accuracy: 0.8064\n",
"Epoch 98/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1399 - accuracy: 0.8072 - val_loss: 0.1385 - val_accuracy: 0.8065\n",
"Epoch 99/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1399 - accuracy: 0.8071 - val_loss: 0.1383 - val_accuracy: 0.8064\n",
"Epoch 100/100\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.1395 - accuracy: 0.8071 - val_loss: 0.1381 - val_accuracy: 0.8065\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 87
},
"id": "07oVockh7reu",
"outputId": "7e710288-2a51-40e0-ffcf-0447fb7d6eb4"
},
"source": [
"%matplotlib inline\n",
"n=10\n",
"plt.figure(figsize=(25,4))\n",
"for i in range(n):\n",
" ax = plt.subplot(2, n, i + 1)\n",
" plt.imshow(decoded_imgs[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",
"print('DENOISED') "
],
"execution_count": 16,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1800x288 with 10 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "stream",
"text": [
"DENOISED\n"
],
"name": "stdout"
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment