{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "code", "source": [ "#KerasTuner requires Python 3.6+ and TensorFlow 2.0+.\n", "!pip install keras-tuner --upgrade" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "TBx1VSxJm2ye", "outputId": "c1109456-1750-4d94-f5c2-a145f664285d" }, "execution_count": 1, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Requirement already satisfied: keras-tuner in /usr/local/lib/python3.10/dist-packages (1.4.6)\n", "Requirement already satisfied: keras in /usr/local/lib/python3.10/dist-packages (from keras-tuner) (2.14.0)\n", "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from keras-tuner) (23.2)\n", "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from keras-tuner) (2.31.0)\n", "Requirement already satisfied: kt-legacy in /usr/local/lib/python3.10/dist-packages (from keras-tuner) (1.0.5)\n", "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->keras-tuner) (3.3.2)\n", "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->keras-tuner) (3.4)\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->keras-tuner) (2.0.7)\n", "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->keras-tuner) (2023.7.22)\n" ] } ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "id": "5zM9asDgk31v" }, "outputs": [], "source": [ "from tensorflow import keras\n", "import keras_tuner\n", "import numpy as np" ] }, { "cell_type": "code", "source": [ "(x, y), (x_test, y_test) = keras.datasets.mnist.load_data()\n", "\n", "x_train = x[:-10000]\n", "x_val = x[-10000:]\n", "y_train = y[:-10000]\n", "y_val = y[-10000:]\n", "\n", "x_train = np.expand_dims(x_train, -1).astype(\"float32\") / 255.0\n", "x_val = np.expand_dims(x_val, -1).astype(\"float32\") / 255.0\n", "x_test = np.expand_dims(x_test, -1).astype(\"float32\") / 255.0" ], "metadata": { "id": "ZL3KvTdNoEDs" }, "execution_count": 3, "outputs": [] }, { "cell_type": "code", "source": [ "def build_model(hp):\n", " model = keras.Sequential()\n", " model.add(keras.layers.Flatten())\n", " model.add(keras.layers.Dense(hp.Choice('units', [32, 128, 256]), activation=\"relu\"))\n", " model.add(keras.layers.Dense(10, activation=\"softmax\"))\n", "\n", " model.compile(optimizer=\"adam\", loss=\"SparseCategoricalCrossentropy\", metrics=[\"accuracy\"])\n", " return model" ], "metadata": { "id": "Bwa1X-TXoiPN" }, "execution_count": 4, "outputs": [] }, { "cell_type": "code", "source": [ "tuner = keras_tuner.RandomSearch(\n", " build_model,\n", " objective='val_accuracy',\n", " max_trials=5)" ], "metadata": { "id": "rOiDnQlbpd6H" }, "execution_count": 7, "outputs": [] }, { "cell_type": "code", "source": [ "tuner.search(x_train, y_train, epochs=3, validation_data=(x_val, y_val))" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "1tqCHT4RnqBk", "outputId": "f6875aae-0180-4c3f-a7a8-496c3509b041" }, "execution_count": 8, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Trial 3 Complete [00h 00m 15s]\n", "val_accuracy: 0.9564999938011169\n", "\n", "Best val_accuracy So Far: 0.9732999801635742\n", "Total elapsed time: 00h 01m 09s\n" ] } ] }, { "cell_type": "code", "source": [ "tuner.get_best_models()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "oV-cm2T7nr1P", "outputId": "c5907f39-ee79-464c-ad6d-b393e3d688de" }, "execution_count": 9, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[]" ] }, "metadata": {}, "execution_count": 9 } ] }, { "cell_type": "code", "source": [ "best_model = tuner.get_best_models()[0]" ], "metadata": { "id": "QbNvjxh4qsXG" }, "execution_count": 10, "outputs": [] }, { "cell_type": "code", "source": [ "tuner.results_summary()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "l3_5cJlWqsui", "outputId": "d86738b2-4810-411a-c9d3-061f96a24a92" }, "execution_count": 11, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Results summary\n", "Results in ./untitled_project\n", "Showing 10 best trials\n", "Objective(name=\"val_accuracy\", direction=\"max\")\n", "\n", "Trial 1 summary\n", "Hyperparameters:\n", "units: 256\n", "Score: 0.9732999801635742\n", "\n", "Trial 0 summary\n", "Hyperparameters:\n", "units: 128\n", "Score: 0.9702000021934509\n", "\n", "Trial 2 summary\n", "Hyperparameters:\n", "units: 32\n", "Score: 0.9564999938011169\n" ] } ] }, { "cell_type": "code", "source": [ "best_model.evaluate(x_test, y_test)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "l1vjSJ73rPVh", "outputId": "e859da52-865f-4981-c671-048a43819356" }, "execution_count": 12, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "313/313 [==============================] - 1s 3ms/step - loss: 0.0868 - accuracy: 0.9737\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "[0.08677380532026291, 0.9736999869346619]" ] }, "metadata": {}, "execution_count": 12 } ] } ] }