machinelearning

Machine learning code
git clone git://git.laack.co/machinelearning.git
Log | Files | Refs

BetterMLPFashionMNIST.ipynb (11920B)


      1 {
      2  "cells": [
      3   {
      4    "cell_type": "code",
      5    "execution_count": 39,
      6    "metadata": {},
      7    "outputs": [],
      8    "source": [
      9     "import tensorflow as tf\n",
     10     "import numpy as np\n",
     11     "\n",
     12     "fashion_mnist = tf.keras.datasets.fashion_mnist.load_data()\n",
     13     "\n",
     14     "# Split train, validation, test\n",
     15     "(X_train_full, y_train_full) , (X_test, y_test) = fashion_mnist\n",
     16     "X_train, y_train = X_train_full[:-5000], y_train_full[:-5000]\n",
     17     "X_valid, y_valid = X_train_full[-5000:], y_train_full[-5000:]\n",
     18     "X_train, X_valid, X_test = X_train / 255., X_valid / 255., X_test / 255.\n",
     19     "\n",
     20     "\n",
     21     "X_train_flipped = np.flip(X_train, axis=2)  # Flip images horizontally\n",
     22     "\n",
     23     "X_train = np.concatenate([X_train, X_train_flipped], axis=0)\n",
     24     "y_train = np.concatenate([y_train, y_train], axis=0)\n",
     25     "\n",
     26     "X_train_flipped = np.flip(X_train, axis=1)  # Flip images vertically\n",
     27     "\n",
     28     "X_train = np.concatenate([X_train, X_train_flipped], axis=0)\n",
     29     "y_train = np.concatenate([y_train, y_train], axis=0)\n"
     30    ]
     31   },
     32   {
     33    "cell_type": "code",
     34    "execution_count": 40,
     35    "metadata": {},
     36    "outputs": [],
     37    "source": [
     38     "import keras\n",
     39     "\n",
     40     "\n",
     41     "model = keras.Sequential(layers=[\n",
     42     "    keras.layers.Input(shape=(28,28)),\n",
     43     "    keras.layers.Flatten(),\n",
     44     "    \n",
     45     "    keras.layers.Dense(512, activation='relu'),\n",
     46     "    keras.layers.BatchNormalization(),\n",
     47     "\n",
     48     "    keras.layers.Dense(256, activation='relu'),\n",
     49     "    keras.layers.Dense(256, activation='relu'),\n",
     50     "    keras.layers.BatchNormalization(),\n",
     51     "\n",
     52     "    keras.layers.Dropout(.5),\n",
     53     "    keras.layers.Dense(128, activation='relu'),\n",
     54     "    keras.layers.Dropout(.5),\n",
     55     "    keras.layers.Dense(128, activation='relu'),\n",
     56     "    keras.layers.Dropout(.5),\n",
     57     "    keras.layers.Dense(128, activation='relu'),\n",
     58     "    keras.layers.Dropout(.5),\n",
     59     "    keras.layers.BatchNormalization(),\n",
     60     "\n",
     61     "    keras.layers.Dense(10, activation='softmax')\n",
     62     "])"
     63    ]
     64   },
     65   {
     66    "cell_type": "code",
     67    "execution_count": 41,
     68    "metadata": {},
     69    "outputs": [],
     70    "source": [
     71     "model.compile(optimizer='adam', loss=keras.losses.sparse_categorical_crossentropy, metrics=['accuracy'])"
     72    ]
     73   },
     74   {
     75    "cell_type": "code",
     76    "execution_count": 42,
     77    "metadata": {},
     78    "outputs": [
     79     {
     80      "name": "stdout",
     81      "output_type": "stream",
     82      "text": [
     83       "Epoch 1/30\n",
     84       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 12ms/step - accuracy: 0.5246 - loss: 1.3562 - val_accuracy: 0.8034 - val_loss: 0.5545\n",
     85       "Epoch 2/30\n",
     86       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 12ms/step - accuracy: 0.8276 - loss: 0.5314 - val_accuracy: 0.8412 - val_loss: 0.4490\n",
     87       "Epoch 3/30\n",
     88       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 12ms/step - accuracy: 0.8533 - loss: 0.4551 - val_accuracy: 0.8244 - val_loss: 0.4879\n",
     89       "Epoch 4/30\n",
     90       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 12ms/step - accuracy: 0.8630 - loss: 0.4189 - val_accuracy: 0.8534 - val_loss: 0.4157\n",
     91       "Epoch 5/30\n",
     92       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 12ms/step - accuracy: 0.8728 - loss: 0.3853 - val_accuracy: 0.8632 - val_loss: 0.3915\n",
     93       "Epoch 6/30\n",
     94       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 12ms/step - accuracy: 0.8778 - loss: 0.3679 - val_accuracy: 0.8710 - val_loss: 0.3670\n",
     95       "Epoch 7/30\n",
     96       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 12ms/step - accuracy: 0.8834 - loss: 0.3510 - val_accuracy: 0.8770 - val_loss: 0.3710\n",
     97       "Epoch 8/30\n",
     98       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 13ms/step - accuracy: 0.8870 - loss: 0.3356 - val_accuracy: 0.8774 - val_loss: 0.3548\n",
     99       "Epoch 9/30\n",
    100       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 13ms/step - accuracy: 0.8905 - loss: 0.3190 - val_accuracy: 0.8808 - val_loss: 0.3496\n",
    101       "Epoch 10/30\n",
    102       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 12ms/step - accuracy: 0.8957 - loss: 0.3048 - val_accuracy: 0.8770 - val_loss: 0.3518\n",
    103       "Epoch 11/30\n",
    104       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 12ms/step - accuracy: 0.9004 - loss: 0.2918 - val_accuracy: 0.8866 - val_loss: 0.3485\n",
    105       "Epoch 12/30\n",
    106       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 13ms/step - accuracy: 0.9029 - loss: 0.2812 - val_accuracy: 0.8806 - val_loss: 0.3427\n",
    107       "Epoch 13/30\n",
    108       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 12ms/step - accuracy: 0.9060 - loss: 0.2720 - val_accuracy: 0.8844 - val_loss: 0.3476\n",
    109       "Epoch 14/30\n",
    110       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 12ms/step - accuracy: 0.9075 - loss: 0.2653 - val_accuracy: 0.8820 - val_loss: 0.3504\n",
    111       "Epoch 15/30\n",
    112       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 12ms/step - accuracy: 0.9103 - loss: 0.2556 - val_accuracy: 0.8846 - val_loss: 0.3560\n",
    113       "Epoch 16/30\n",
    114       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 12ms/step - accuracy: 0.9143 - loss: 0.2479 - val_accuracy: 0.8762 - val_loss: 0.4009\n",
    115       "Epoch 17/30\n",
    116       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 12ms/step - accuracy: 0.9180 - loss: 0.2367 - val_accuracy: 0.8806 - val_loss: 0.3516\n",
    117       "Epoch 18/30\n",
    118       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 12ms/step - accuracy: 0.9179 - loss: 0.2342 - val_accuracy: 0.8836 - val_loss: 0.3528\n",
    119       "Epoch 19/30\n",
    120       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 12ms/step - accuracy: 0.9217 - loss: 0.2227 - val_accuracy: 0.8844 - val_loss: 0.3653\n",
    121       "Epoch 20/30\n",
    122       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 12ms/step - accuracy: 0.9239 - loss: 0.2167 - val_accuracy: 0.8784 - val_loss: 0.3841\n",
    123       "Epoch 21/30\n",
    124       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 12ms/step - accuracy: 0.9262 - loss: 0.2106 - val_accuracy: 0.8774 - val_loss: 0.3867\n",
    125       "Epoch 22/30\n",
    126       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 14ms/step - accuracy: 0.9283 - loss: 0.2008 - val_accuracy: 0.8818 - val_loss: 0.3576\n",
    127       "Epoch 23/30\n",
    128       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 13ms/step - accuracy: 0.9309 - loss: 0.1967 - val_accuracy: 0.8886 - val_loss: 0.3697\n",
    129       "Epoch 24/30\n",
    130       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 12ms/step - accuracy: 0.9317 - loss: 0.1937 - val_accuracy: 0.8702 - val_loss: 0.4344\n",
    131       "Epoch 25/30\n",
    132       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 12ms/step - accuracy: 0.9352 - loss: 0.1827 - val_accuracy: 0.8888 - val_loss: 0.3815\n",
    133       "Epoch 26/30\n",
    134       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 12ms/step - accuracy: 0.9366 - loss: 0.1795 - val_accuracy: 0.8864 - val_loss: 0.4179\n",
    135       "Epoch 27/30\n",
    136       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 13ms/step - accuracy: 0.9369 - loss: 0.1750 - val_accuracy: 0.8810 - val_loss: 0.4238\n",
    137       "Epoch 28/30\n",
    138       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 12ms/step - accuracy: 0.9400 - loss: 0.1693 - val_accuracy: 0.8868 - val_loss: 0.3935\n",
    139       "Epoch 29/30\n",
    140       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 12ms/step - accuracy: 0.9411 - loss: 0.1653 - val_accuracy: 0.8844 - val_loss: 0.4267\n",
    141       "Epoch 30/30\n",
    142       "\u001b[1m430/430\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 12ms/step - accuracy: 0.9412 - loss: 0.1663 - val_accuracy: 0.8872 - val_loss: 0.4196\n"
    143      ]
    144     },
    145     {
    146      "data": {
    147       "text/plain": [
    148        "<keras.src.callbacks.history.History at 0x7fd2b8301c10>"
    149       ]
    150      },
    151      "execution_count": 42,
    152      "metadata": {},
    153      "output_type": "execute_result"
    154     }
    155    ],
    156    "source": [
    157     "model.fit(X_train,y_train, epochs=30, validation_data=[X_valid, y_valid], batch_size=512)"
    158    ]
    159   },
    160   {
    161    "cell_type": "code",
    162    "execution_count": 43,
    163    "metadata": {},
    164    "outputs": [
    165     {
    166      "name": "stdout",
    167      "output_type": "stream",
    168      "text": [
    169       "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 0.8873 - loss: 0.4575\n"
    170      ]
    171     },
    172     {
    173      "data": {
    174       "text/plain": [
    175        "[0.45343443751335144, 0.8859999775886536]"
    176       ]
    177      },
    178      "execution_count": 43,
    179      "metadata": {},
    180      "output_type": "execute_result"
    181     }
    182    ],
    183    "source": [
    184     "model.evaluate(X_test,y_test)"
    185    ]
    186   }
    187  ],
    188  "metadata": {
    189   "kernelspec": {
    190    "display_name": ".venv",
    191    "language": "python",
    192    "name": "python3"
    193   },
    194   "language_info": {
    195    "codemirror_mode": {
    196     "name": "ipython",
    197     "version": 3
    198    },
    199    "file_extension": ".py",
    200    "mimetype": "text/x-python",
    201    "name": "python",
    202    "nbconvert_exporter": "python",
    203    "pygments_lexer": "ipython3",
    204    "version": "3.11.2"
    205   }
    206  },
    207  "nbformat": 4,
    208  "nbformat_minor": 2
    209 }