{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import tensorflow as tf\n", "from tensorflow import keras\n", "from tensorflow.keras import layers\n", "\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sequential" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model=keras.Sequential()\n", "model.add(layers.Dense(64, activation=\"relu\", input_shape=(784,)))\n", "model.add(layers.Dense(64, activation=\"relu\"))\n", "model.add(layers.Dense(10))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#or" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model=keras.Sequential()\n", "model.add(keras.Input(shape=(784,)))\n", "model.add(layers.Dense(64, activation=\"relu\"))\n", "model.add(layers.Dense(64, activation=\"relu\"))\n", "model.add(layers.Dense(10))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### functional" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "inputs = keras.Input(shape=(784,))\n", "x1 = layers.Dense(64, activation=\"relu\")(inputs)\n", "x2 = layers.Dense(64, activation=\"relu\")(x1)\n", "outputs = layers.Dense(10)(x2)\n", "model = keras.Model(inputs=inputs, outputs=outputs, name=\"mnist_model\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "keras.utils.plot_model(model, \"my_first_model.png\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "more: \n", " https://keras.io/guides/functional_api/" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "inputs = keras.Input(shape=(32, 32, 3), name=\"img\")\n", "x = layers.Conv2D(32, 3, activation=\"relu\")(inputs)\n", "x = layers.Conv2D(64, 3, activation=\"relu\")(x)\n", "block_1_output = layers.MaxPooling2D(3)(x)\n", "\n", "x = layers.Conv2D(64, 3, activation=\"relu\", padding=\"same\")(block_1_output)\n", "x = layers.Conv2D(64, 3, activation=\"relu\", padding=\"same\")(x)\n", "block_2_output = layers.add([x, block_1_output])\n", "\n", "x = layers.Conv2D(64, 3, activation=\"relu\", padding=\"same\")(block_2_output)\n", "x = layers.Conv2D(64, 3, activation=\"relu\", padding=\"same\")(x)\n", "block_3_output = layers.add([x, block_2_output])\n", "\n", "x = layers.Conv2D(64, 3, activation=\"relu\")(block_3_output)\n", "x = layers.GlobalAveragePooling2D()(x)\n", "x = layers.Dense(256, activation=\"relu\")(x)\n", "x = layers.Dropout(0.5)(x)\n", "outputs = layers.Dense(10)(x)\n", "\n", "model = keras.Model(inputs, outputs, name=\"toy_resnet\")\n", "model.summary()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "(x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data()\n", "\n", "x_train = x_train.astype(\"float32\") / 255.0\n", "x_test = x_test.astype(\"float32\") / 255.0\n", "y_train = keras.utils.to_categorical(y_train, 10)\n", "y_test = keras.utils.to_categorical(y_test, 10)\n", "\n", "model.compile(\n", " optimizer=keras.optimizers.RMSprop(1e-3),\n", " loss=keras.losses.CategoricalCrossentropy(from_logits=True),\n", " metrics=[\"acc\"],\n", ")\n", "# We restrict the data to the first 1000 samples so as to limit execution time\n", "# on Colab. Try to train on the entire dataset until convergence!\n", "model.fit(x_train[:1000], y_train[:1000], batch_size=64, epochs=1, validation_split=0.2)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "vision-class", "language": "python", "name": "tensorflow_25" }, "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.8.10" } }, "nbformat": 4, "nbformat_minor": 4 }