machinelearning

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit acc144969426f9bacd514fd9e44a99564e0243f4
parent 4a51fdcf8f570deb5dba6b14aa4649c359eabb47
Author: Andrew <andrewlaack1@gmail.com>
Date:   Mon,  1 Jul 2024 18:20:00 -0500

implemented data augmentation.

Diffstat:
AfashionMNIST/BetterMLPFashionMNIST.ipynb | 209+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 209 insertions(+), 0 deletions(-)

diff --git a/fashionMNIST/BetterMLPFashionMNIST.ipynb b/fashionMNIST/BetterMLPFashionMNIST.ipynb @@ -0,0 +1,209 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "import tensorflow as tf\n", + "import numpy as np\n", + "\n", + "fashion_mnist = tf.keras.datasets.fashion_mnist.load_data()\n", + "\n", + "# Split train, validation, test\n", + "(X_train_full, y_train_full) , (X_test, y_test) = fashion_mnist\n", + "X_train, y_train = X_train_full[:-5000], y_train_full[:-5000]\n", + "X_valid, y_valid = X_train_full[-5000:], y_train_full[-5000:]\n", + "X_train, X_valid, X_test = X_train / 255., X_valid / 255., X_test / 255.\n", + "\n", + "\n", + "X_train_flipped = np.flip(X_train, axis=2) # Flip images horizontally\n", + "\n", + "X_train = np.concatenate([X_train, X_train_flipped], axis=0)\n", + "y_train = np.concatenate([y_train, y_train], axis=0)\n", + "\n", + "X_train_flipped = np.flip(X_train, axis=1) # Flip images vertically\n", + "\n", + "X_train = np.concatenate([X_train, X_train_flipped], axis=0)\n", + "y_train = np.concatenate([y_train, y_train], axis=0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "import keras\n", + "\n", + "\n", + "model = keras.Sequential(layers=[\n", + " keras.layers.Input(shape=(28,28)),\n", + " keras.layers.Flatten(),\n", + " \n", + " keras.layers.Dense(512, activation='relu'),\n", + " keras.layers.BatchNormalization(),\n", + "\n", + " keras.layers.Dense(256, activation='relu'),\n", + " keras.layers.Dense(256, activation='relu'),\n", + " keras.layers.BatchNormalization(),\n", + "\n", + " keras.layers.Dropout(.5),\n", + " keras.layers.Dense(128, activation='relu'),\n", + " keras.layers.Dropout(.5),\n", + " keras.layers.Dense(128, activation='relu'),\n", + " keras.layers.Dropout(.5),\n", + " keras.layers.Dense(128, activation='relu'),\n", + " keras.layers.Dropout(.5),\n", + " keras.layers.BatchNormalization(),\n", + "\n", + " keras.layers.Dense(10, activation='softmax')\n", + "])" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "model.compile(optimizer='adam', loss=keras.losses.sparse_categorical_crossentropy, metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/30\n", + "\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", + "Epoch 2/30\n", + "\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", + "Epoch 3/30\n", + "\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", + "Epoch 4/30\n", + "\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", + "Epoch 5/30\n", + "\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", + "Epoch 6/30\n", + "\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", + "Epoch 7/30\n", + "\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", + "Epoch 8/30\n", + "\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", + "Epoch 9/30\n", + "\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", + "Epoch 10/30\n", + "\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", + "Epoch 11/30\n", + "\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", + "Epoch 12/30\n", + "\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", + "Epoch 13/30\n", + "\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", + "Epoch 14/30\n", + "\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", + "Epoch 15/30\n", + "\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", + "Epoch 16/30\n", + "\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", + "Epoch 17/30\n", + "\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", + "Epoch 18/30\n", + "\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", + "Epoch 19/30\n", + "\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", + "Epoch 20/30\n", + "\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", + "Epoch 21/30\n", + "\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", + "Epoch 22/30\n", + "\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", + "Epoch 23/30\n", + "\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", + "Epoch 24/30\n", + "\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", + "Epoch 25/30\n", + "\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", + "Epoch 26/30\n", + "\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", + "Epoch 27/30\n", + "\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", + "Epoch 28/30\n", + "\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", + "Epoch 29/30\n", + "\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", + "Epoch 30/30\n", + "\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" + ] + }, + { + "data": { + "text/plain": [ + "<keras.src.callbacks.history.History at 0x7fd2b8301c10>" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.fit(X_train,y_train, epochs=30, validation_data=[X_valid, y_valid], batch_size=512)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\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" + ] + }, + { + "data": { + "text/plain": [ + "[0.45343443751335144, 0.8859999775886536]" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.evaluate(X_test,y_test)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}