├── CNN_Tensorflow.ipynb
├── Load_model.ipynb
└── README.md
/CNN_Tensorflow.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "CNN_Tensorflow.ipynb",
7 | "provenance": [],
8 | "authorship_tag": "ABX9TyOXCKrHOZF+KrZ/Bc3D54EQ",
9 | "include_colab_link": true
10 | },
11 | "kernelspec": {
12 | "name": "python3",
13 | "display_name": "Python 3"
14 | },
15 | "language_info": {
16 | "name": "python"
17 | },
18 | "accelerator": "GPU"
19 | },
20 | "cells": [
21 | {
22 | "cell_type": "markdown",
23 | "metadata": {
24 | "id": "view-in-github",
25 | "colab_type": "text"
26 | },
27 | "source": [
28 | "
"
29 | ]
30 | },
31 | {
32 | "cell_type": "code",
33 | "execution_count": 1,
34 | "metadata": {
35 | "colab": {
36 | "base_uri": "https://localhost:8080/"
37 | },
38 | "id": "K5G4uMuhUdlE",
39 | "outputId": "bb8ee729-eca4-40fb-995e-1c3b8533860e"
40 | },
41 | "outputs": [
42 | {
43 | "output_type": "stream",
44 | "name": "stdout",
45 | "text": [
46 | "Found GPU at: /device:GPU:0\n"
47 | ]
48 | }
49 | ],
50 | "source": [
51 | "%tensorflow_version 2.x\n",
52 | "import tensorflow as tf\n",
53 | "device_name = tf.test.gpu_device_name()\n",
54 | "if device_name != '/device:GPU:0':\n",
55 | " raise SystemError('GPU device not found')\n",
56 | "print('Found GPU at: {}'.format(device_name))\n"
57 | ]
58 | },
59 | {
60 | "cell_type": "code",
61 | "source": [
62 | "from tensorflow import keras\n",
63 | "from tensorflow.keras import layers\n",
64 | "\n",
65 | "import matplotlib.pyplot as plt\n",
66 | "\n",
67 | "cifar10 = keras.datasets.cifar10\n",
68 | "\n",
69 | "(train_images, train_labels), (test_images, test_labels) = cifar10.load_data()\n",
70 | "\n",
71 | "print(train_images.shape) # 50000, 32, 32, 3\n",
72 | "\n",
73 | "# Normalize: 0,255 -> 0,1\n",
74 | "train_images, test_images = train_images / 255.0, test_images / 255.0\n",
75 | "\n",
76 | "class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer',\n",
77 | " 'dog', 'frog', 'horse', 'ship', 'truck']\n",
78 | "\n",
79 | "\n",
80 | "\n",
81 | "\n",
82 | "# model...\n",
83 | "model = keras.models.Sequential()\n",
84 | "model.add(layers.Conv2D(32, (3,3), strides=(1,1), padding=\"valid\", activation='relu', input_shape=(32,32,3)))\n",
85 | "model.add(layers.MaxPool2D((2,2)))\n",
86 | "model.add(layers.Conv2D(32, 3, activation='relu'))\n",
87 | "model.add(layers.MaxPool2D((2,2)))\n",
88 | "model.add(layers.Flatten())\n",
89 | "model.add(layers.Dense(64, activation='relu'))\n",
90 | "model.add(layers.Dense(10))\n",
91 | "print(model.summary())\n",
92 | "#import sys; sys.exit()\n",
93 | "\n",
94 | "# loss and optimizer\n",
95 | "loss = keras.losses.SparseCategoricalCrossentropy(from_logits=True)\n",
96 | "optim = keras.optimizers.Adam(lr=0.001)\n",
97 | "metrics = [\"accuracy\"]\n",
98 | "\n",
99 | "model.compile(optimizer=optim, loss=loss, metrics=metrics)\n",
100 | "\n",
101 | "# training\n",
102 | "batch_size = 64\n",
103 | "epochs = 30\n",
104 | "\n",
105 | "model.fit(train_images, train_labels, epochs=epochs,\n",
106 | " batch_size=batch_size, verbose=2)\n",
107 | "\n",
108 | "# evaulate\n",
109 | "model.evaluate(test_images, test_labels, batch_size=batch_size, verbose=2)\n"
110 | ],
111 | "metadata": {
112 | "colab": {
113 | "base_uri": "https://localhost:8080/"
114 | },
115 | "id": "82HKXmuhVA23",
116 | "outputId": "29e52894-1778-4ce0-e0c6-1e0065e4e7ab"
117 | },
118 | "execution_count": 4,
119 | "outputs": [
120 | {
121 | "output_type": "stream",
122 | "name": "stdout",
123 | "text": [
124 | "(50000, 32, 32, 3)\n",
125 | "Model: \"sequential_1\"\n",
126 | "_________________________________________________________________\n",
127 | " Layer (type) Output Shape Param # \n",
128 | "=================================================================\n",
129 | " conv2d_2 (Conv2D) (None, 30, 30, 32) 896 \n",
130 | " \n",
131 | " max_pooling2d_2 (MaxPooling (None, 15, 15, 32) 0 \n",
132 | " 2D) \n",
133 | " \n",
134 | " conv2d_3 (Conv2D) (None, 13, 13, 32) 9248 \n",
135 | " \n",
136 | " max_pooling2d_3 (MaxPooling (None, 6, 6, 32) 0 \n",
137 | " 2D) \n",
138 | " \n",
139 | " flatten_1 (Flatten) (None, 1152) 0 \n",
140 | " \n",
141 | " dense_2 (Dense) (None, 64) 73792 \n",
142 | " \n",
143 | " dense_3 (Dense) (None, 10) 650 \n",
144 | " \n",
145 | "=================================================================\n",
146 | "Total params: 84,586\n",
147 | "Trainable params: 84,586\n",
148 | "Non-trainable params: 0\n",
149 | "_________________________________________________________________\n",
150 | "None\n"
151 | ]
152 | },
153 | {
154 | "output_type": "stream",
155 | "name": "stderr",
156 | "text": [
157 | "/usr/local/lib/python3.7/dist-packages/keras/optimizer_v2/adam.py:105: UserWarning: The `lr` argument is deprecated, use `learning_rate` instead.\n",
158 | " super(Adam, self).__init__(name, **kwargs)\n"
159 | ]
160 | },
161 | {
162 | "output_type": "stream",
163 | "name": "stdout",
164 | "text": [
165 | "Epoch 1/30\n",
166 | "782/782 - 4s - loss: 1.5598 - accuracy: 0.4364 - 4s/epoch - 6ms/step\n",
167 | "Epoch 2/30\n",
168 | "782/782 - 4s - loss: 1.2366 - accuracy: 0.5617 - 4s/epoch - 5ms/step\n",
169 | "Epoch 3/30\n",
170 | "782/782 - 4s - loss: 1.0923 - accuracy: 0.6158 - 4s/epoch - 5ms/step\n",
171 | "Epoch 4/30\n",
172 | "782/782 - 4s - loss: 1.0094 - accuracy: 0.6468 - 4s/epoch - 5ms/step\n",
173 | "Epoch 5/30\n",
174 | "782/782 - 4s - loss: 0.9511 - accuracy: 0.6691 - 4s/epoch - 5ms/step\n",
175 | "Epoch 6/30\n",
176 | "782/782 - 4s - loss: 0.8981 - accuracy: 0.6894 - 4s/epoch - 5ms/step\n",
177 | "Epoch 7/30\n",
178 | "782/782 - 4s - loss: 0.8595 - accuracy: 0.7002 - 4s/epoch - 5ms/step\n",
179 | "Epoch 8/30\n",
180 | "782/782 - 4s - loss: 0.8200 - accuracy: 0.7164 - 4s/epoch - 5ms/step\n",
181 | "Epoch 9/30\n",
182 | "782/782 - 4s - loss: 0.7941 - accuracy: 0.7242 - 4s/epoch - 5ms/step\n",
183 | "Epoch 10/30\n",
184 | "782/782 - 4s - loss: 0.7642 - accuracy: 0.7346 - 4s/epoch - 5ms/step\n",
185 | "Epoch 11/30\n",
186 | "782/782 - 4s - loss: 0.7340 - accuracy: 0.7450 - 4s/epoch - 5ms/step\n",
187 | "Epoch 12/30\n",
188 | "782/782 - 4s - loss: 0.7077 - accuracy: 0.7535 - 4s/epoch - 5ms/step\n",
189 | "Epoch 13/30\n",
190 | "782/782 - 4s - loss: 0.6827 - accuracy: 0.7608 - 4s/epoch - 5ms/step\n",
191 | "Epoch 14/30\n",
192 | "782/782 - 4s - loss: 0.6680 - accuracy: 0.7671 - 4s/epoch - 5ms/step\n",
193 | "Epoch 15/30\n",
194 | "782/782 - 4s - loss: 0.6470 - accuracy: 0.7747 - 4s/epoch - 5ms/step\n",
195 | "Epoch 16/30\n",
196 | "782/782 - 4s - loss: 0.6267 - accuracy: 0.7819 - 4s/epoch - 5ms/step\n",
197 | "Epoch 17/30\n",
198 | "782/782 - 4s - loss: 0.6096 - accuracy: 0.7875 - 4s/epoch - 5ms/step\n",
199 | "Epoch 18/30\n",
200 | "782/782 - 4s - loss: 0.5853 - accuracy: 0.7955 - 4s/epoch - 5ms/step\n",
201 | "Epoch 19/30\n",
202 | "782/782 - 4s - loss: 0.5788 - accuracy: 0.7980 - 4s/epoch - 5ms/step\n",
203 | "Epoch 20/30\n",
204 | "782/782 - 4s - loss: 0.5612 - accuracy: 0.8024 - 4s/epoch - 5ms/step\n",
205 | "Epoch 21/30\n",
206 | "782/782 - 4s - loss: 0.5456 - accuracy: 0.8088 - 4s/epoch - 5ms/step\n",
207 | "Epoch 22/30\n",
208 | "782/782 - 4s - loss: 0.5270 - accuracy: 0.8162 - 4s/epoch - 5ms/step\n",
209 | "Epoch 23/30\n",
210 | "782/782 - 4s - loss: 0.5154 - accuracy: 0.8191 - 4s/epoch - 5ms/step\n",
211 | "Epoch 24/30\n",
212 | "782/782 - 4s - loss: 0.5005 - accuracy: 0.8233 - 4s/epoch - 5ms/step\n",
213 | "Epoch 25/30\n",
214 | "782/782 - 4s - loss: 0.4906 - accuracy: 0.8284 - 4s/epoch - 5ms/step\n",
215 | "Epoch 26/30\n",
216 | "782/782 - 4s - loss: 0.4731 - accuracy: 0.8340 - 4s/epoch - 5ms/step\n",
217 | "Epoch 27/30\n",
218 | "782/782 - 4s - loss: 0.4642 - accuracy: 0.8359 - 4s/epoch - 5ms/step\n",
219 | "Epoch 28/30\n",
220 | "782/782 - 4s - loss: 0.4493 - accuracy: 0.8421 - 4s/epoch - 5ms/step\n",
221 | "Epoch 29/30\n",
222 | "782/782 - 4s - loss: 0.4396 - accuracy: 0.8439 - 4s/epoch - 5ms/step\n",
223 | "Epoch 30/30\n",
224 | "782/782 - 4s - loss: 0.4317 - accuracy: 0.8474 - 4s/epoch - 5ms/step\n",
225 | "157/157 - 1s - loss: 1.1678 - accuracy: 0.6792 - 713ms/epoch - 5ms/step\n"
226 | ]
227 | },
228 | {
229 | "output_type": "execute_result",
230 | "data": {
231 | "text/plain": [
232 | "[1.1678192615509033, 0.6791999936103821]"
233 | ]
234 | },
235 | "metadata": {},
236 | "execution_count": 4
237 | }
238 | ]
239 | },
240 | {
241 | "cell_type": "code",
242 | "source": [
243 | ""
244 | ],
245 | "metadata": {
246 | "id": "6CI1cBIoV2_4"
247 | },
248 | "execution_count": null,
249 | "outputs": []
250 | }
251 | ]
252 | }
--------------------------------------------------------------------------------
/Load_model.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "Load_model.ipynb",
7 | "provenance": [],
8 | "authorship_tag": "ABX9TyOC61EK6rIRkc8fwWMstF8k",
9 | "include_colab_link": true
10 | },
11 | "kernelspec": {
12 | "name": "python3",
13 | "display_name": "Python 3"
14 | },
15 | "language_info": {
16 | "name": "python"
17 | },
18 | "accelerator": "GPU"
19 | },
20 | "cells": [
21 | {
22 | "cell_type": "markdown",
23 | "metadata": {
24 | "id": "view-in-github",
25 | "colab_type": "text"
26 | },
27 | "source": [
28 | "
"
29 | ]
30 | },
31 | {
32 | "cell_type": "code",
33 | "execution_count": 1,
34 | "metadata": {
35 | "colab": {
36 | "base_uri": "https://localhost:8080/"
37 | },
38 | "id": "NPUiENulmMVZ",
39 | "outputId": "d7ff31e9-8be1-4dfd-a016-d0e945f30db1"
40 | },
41 | "outputs": [
42 | {
43 | "output_type": "stream",
44 | "name": "stdout",
45 | "text": [
46 | "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz\n",
47 | "11493376/11490434 [==============================] - 0s 0us/step\n",
48 | "11501568/11490434 [==============================] - 0s 0us/step\n"
49 | ]
50 | },
51 | {
52 | "output_type": "stream",
53 | "name": "stderr",
54 | "text": [
55 | "/usr/local/lib/python3.7/dist-packages/keras/optimizer_v2/adam.py:105: UserWarning: The `lr` argument is deprecated, use `learning_rate` instead.\n",
56 | " super(Adam, self).__init__(name, **kwargs)\n"
57 | ]
58 | },
59 | {
60 | "output_type": "stream",
61 | "name": "stdout",
62 | "text": [
63 | "Epoch 1/5\n",
64 | "938/938 - 5s - loss: 0.3046 - sparse_categorical_accuracy: 0.9139 - 5s/epoch - 5ms/step\n",
65 | "Epoch 2/5\n",
66 | "938/938 - 2s - loss: 0.1376 - sparse_categorical_accuracy: 0.9598 - 2s/epoch - 2ms/step\n",
67 | "Epoch 3/5\n",
68 | "938/938 - 2s - loss: 0.0963 - sparse_categorical_accuracy: 0.9722 - 2s/epoch - 3ms/step\n",
69 | "Epoch 4/5\n",
70 | "938/938 - 2s - loss: 0.0733 - sparse_categorical_accuracy: 0.9786 - 2s/epoch - 3ms/step\n",
71 | "Epoch 5/5\n",
72 | "938/938 - 2s - loss: 0.0579 - sparse_categorical_accuracy: 0.9832 - 2s/epoch - 2ms/step\n",
73 | "Evaluate:\n",
74 | "313/313 - 1s - loss: 0.0811 - sparse_categorical_accuracy: 0.9744 - 836ms/epoch - 3ms/step\n",
75 | "INFO:tensorflow:Assets written to: nn/assets\n"
76 | ]
77 | }
78 | ],
79 | "source": [
80 | "import tensorflow as tf\n",
81 | "from tensorflow import keras\n",
82 | "import numpy as np\n",
83 | "\n",
84 | "mnist = keras.datasets.mnist\n",
85 | "\n",
86 | "(x_train, y_train), (x_test, y_test) = mnist.load_data()\n",
87 | "\n",
88 | "# normalize\n",
89 | "x_train, x_test = x_train / 255.0, x_test / 255.0\n",
90 | "\n",
91 | "\n",
92 | "# Feed forward neural network\n",
93 | "model = keras.models.Sequential([\n",
94 | " keras.layers.Flatten(input_shape=(28,28)),\n",
95 | " keras.layers.Dense(128, activation='relu'),\n",
96 | " keras.layers.Dense(10),\n",
97 | "])\n",
98 | "\n",
99 | "# config\n",
100 | "loss = keras.losses.SparseCategoricalCrossentropy(from_logits=True)\n",
101 | "optim = keras.optimizers.Adam(lr=0.001) # \"adam\"\n",
102 | "metrics = [keras.metrics.SparseCategoricalAccuracy()] # \"accuracy\"\n",
103 | "\n",
104 | "# compile\n",
105 | "model.compile(loss=loss, optimizer=optim, metrics=metrics)\n",
106 | "\n",
107 | "# fit/training\n",
108 | "model.fit(x_train, y_train, batch_size=64, epochs=5, shuffle=True, verbose=2)\n",
109 | "\n",
110 | "print(\"Evaluate:\")\n",
111 | "model.evaluate(x_test, y_test, verbose=2)\n",
112 | "\n",
113 | "# 1) Save whole model\n",
114 | "# two formats: SavedModel or HDF5\n",
115 | "model.save(\"nn\") # no file ending = SavedModel\n",
116 | "model.save(\"nn.h5\") # .h5 = HDF5\n",
117 | "\n",
118 | "new_model = keras.models.load_model(\"nn.h5\")\n",
119 | "\n"
120 | ]
121 | },
122 | {
123 | "cell_type": "code",
124 | "source": [
125 | "# 2) save only weights\n",
126 | "model.save_weights(\"nn_weights.h5\")\n",
127 | "\n",
128 | "# initilaize model first:\n",
129 | "# model = keras.Sequential([...])\n",
130 | "model.load_weights(\"nn_weights.h5\")\n",
131 | "\n"
132 | ],
133 | "metadata": {
134 | "id": "c2w7PmDamlXK"
135 | },
136 | "execution_count": 2,
137 | "outputs": []
138 | },
139 | {
140 | "cell_type": "code",
141 | "source": [
142 | "# 3) save only architecture, to_json\n",
143 | "json_string = model.to_json()\n",
144 | "\n",
145 | "with open(\"nn_model.json\", \"w\") as f:\n",
146 | " f.write(json_string)\n",
147 | "\n",
148 | "with open(\"nn_model.json\", \"r\") as f:\n",
149 | " loaded_json_string = f.read()\n",
150 | "\n",
151 | "new_model = keras.models.model_from_json(loaded_json_string)\n",
152 | "print(new_model.summary())\n"
153 | ],
154 | "metadata": {
155 | "colab": {
156 | "base_uri": "https://localhost:8080/"
157 | },
158 | "id": "XqiZXhWlmwbd",
159 | "outputId": "10d1612c-2dae-4276-c3a0-f905c7839ee8"
160 | },
161 | "execution_count": 3,
162 | "outputs": [
163 | {
164 | "output_type": "stream",
165 | "name": "stdout",
166 | "text": [
167 | "Model: \"sequential\"\n",
168 | "_________________________________________________________________\n",
169 | " Layer (type) Output Shape Param # \n",
170 | "=================================================================\n",
171 | " flatten (Flatten) (None, 784) 0 \n",
172 | " \n",
173 | " dense (Dense) (None, 128) 100480 \n",
174 | " \n",
175 | " dense_1 (Dense) (None, 10) 1290 \n",
176 | " \n",
177 | "=================================================================\n",
178 | "Total params: 101,770\n",
179 | "Trainable params: 101,770\n",
180 | "Non-trainable params: 0\n",
181 | "_________________________________________________________________\n",
182 | "None\n"
183 | ]
184 | }
185 | ]
186 | },
187 | {
188 | "cell_type": "code",
189 | "source": [
190 | ""
191 | ],
192 | "metadata": {
193 | "id": "uKan1yYemzZf"
194 | },
195 | "execution_count": null,
196 | "outputs": []
197 | }
198 | ]
199 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Tensorflow
2 | Neural Network
3 |
--------------------------------------------------------------------------------