Amazing-Python-Scripts
/
Fashion_MNIST_MultiClass_Image_Classification_(CNN).ipynb
645 строк · 74.5 Кб
1{
2"nbformat": 4,
3"nbformat_minor": 0,
4"metadata": {
5"colab": {
6"provenance": []
7},
8"kernelspec": {
9"name": "python3",
10"display_name": "Python 3"
11},
12"language_info": {
13"name": "python"
14}
15},
16"cells": [
17{
18"cell_type": "markdown",
19"source": [
20"Libraries"
21],
22"metadata": {
23"id": "X1g131LkMs2l"
24}
25},
26{
27"cell_type": "code",
28"execution_count": 47,
29"metadata": {
30"id": "H579zGsgDeBv"
31},
32"outputs": [],
33"source": [
34"import tensorflow as tf\n",
35"import pandas as pd\n",
36"import numpy as np\n",
37"from google.colab import files\n",
38"import matplotlib.pyplot as plt\n",
39"from keras.preprocessing import image"
40]
41},
42{
43"cell_type": "code",
44"source": [
45"dataset=tf.keras.datasets.fashion_mnist\n",
46"(train,train_labels),(test,test_labels)=dataset.load_data()"
47],
48"metadata": {
49"id": "r2pdmx2FM7MJ"
50},
51"execution_count": 8,
52"outputs": []
53},
54{
55"cell_type": "code",
56"source": [
57"train.shape"
58],
59"metadata": {
60"colab": {
61"base_uri": "https://localhost:8080/"
62},
63"id": "rmMBgOUeODHu",
64"outputId": "71ae9891-afd6-4b53-aa39-e4327cf3b2e3"
65},
66"execution_count": 9,
67"outputs": [
68{
69"output_type": "execute_result",
70"data": {
71"text/plain": [
72"(60000, 28, 28)"
73]
74},
75"metadata": {},
76"execution_count": 9
77}
78]
79},
80{
81"cell_type": "code",
82"source": [
83"test.shape"
84],
85"metadata": {
86"colab": {
87"base_uri": "https://localhost:8080/"
88},
89"id": "QmTbWMRxOK--",
90"outputId": "b21820ac-2a2f-4f62-8f2e-016f9db19fd5"
91},
92"execution_count": 10,
93"outputs": [
94{
95"output_type": "execute_result",
96"data": {
97"text/plain": [
98"(10000, 28, 28)"
99]
100},
101"metadata": {},
102"execution_count": 10
103}
104]
105},
106{
107"cell_type": "markdown",
108"source": [
109"Image Preprocessing"
110],
111"metadata": {
112"id": "VbqyMa3dN9l1"
113}
114},
115{
116"cell_type": "code",
117"source": [
118"train=train.reshape(60000,28,28,1)\n",
119"train=train/255"
120],
121"metadata": {
122"id": "k2AdnnteNzI8"
123},
124"execution_count": 12,
125"outputs": []
126},
127{
128"cell_type": "code",
129"source": [
130"test=test.reshape(10000,28,28,1)\n",
131"test=test/255"
132],
133"metadata": {
134"id": "w89GRl4YOcti"
135},
136"execution_count": 14,
137"outputs": []
138},
139{
140"cell_type": "markdown",
141"source": [
142"CNN"
143],
144"metadata": {
145"id": "m1XWcdo7QAXK"
146}
147},
148{
149"cell_type": "code",
150"source": [
151"cnn=tf.keras.models.Sequential([\n",
152" tf.keras.layers.Conv2D(64,(3,3),activation=\"relu\",padding=\"same\",input_shape=(28,28,1)),\n",
153" tf.keras.layers.MaxPooling2D(2,2),\n",
154" tf.keras.layers.Conv2D(32,(3,3),activation=\"relu\",padding=\"same\"),\n",
155" tf.keras.layers.MaxPooling2D(2,2),\n",
156" tf.keras.layers.Flatten(),\n",
157" tf.keras.layers.Dense(128,activation=\"relu\"),\n",
158" tf.keras.layers.Dense(64,activation=\"relu\"),\n",
159" tf.keras.layers.Dense(10,activation=\"softmax\")\n",
160"])\n",
161"\n",
162"cnn.summary()"
163],
164"metadata": {
165"colab": {
166"base_uri": "https://localhost:8080/"
167},
168"id": "BWJJK4-qOktf",
169"outputId": "8c0d251c-0add-477e-959f-752997d6e76e"
170},
171"execution_count": 18,
172"outputs": [
173{
174"output_type": "stream",
175"name": "stdout",
176"text": [
177"Model: \"sequential_1\"\n",
178"_________________________________________________________________\n",
179" Layer (type) Output Shape Param # \n",
180"=================================================================\n",
181" conv2d_2 (Conv2D) (None, 28, 28, 64) 640 \n",
182" \n",
183" max_pooling2d_2 (MaxPooling (None, 14, 14, 64) 0 \n",
184" 2D) \n",
185" \n",
186" conv2d_3 (Conv2D) (None, 14, 14, 32) 18464 \n",
187" \n",
188" max_pooling2d_3 (MaxPooling (None, 7, 7, 32) 0 \n",
189" 2D) \n",
190" \n",
191" flatten_1 (Flatten) (None, 1568) 0 \n",
192" \n",
193" dense_3 (Dense) (None, 128) 200832 \n",
194" \n",
195" dense_4 (Dense) (None, 64) 8256 \n",
196" \n",
197" dense_5 (Dense) (None, 10) 650 \n",
198" \n",
199"=================================================================\n",
200"Total params: 228,842\n",
201"Trainable params: 228,842\n",
202"Non-trainable params: 0\n",
203"_________________________________________________________________\n"
204]
205}
206]
207},
208{
209"cell_type": "code",
210"source": [
211"cnn.compile(optimizer=\"adam\",loss=\"sparse_categorical_crossentropy\",metrics=[\"accuracy\"])"
212],
213"metadata": {
214"id": "hj6WRNLUQHp_"
215},
216"execution_count": 19,
217"outputs": []
218},
219{
220"cell_type": "code",
221"source": [
222"model=cnn.fit(train,train_labels,epochs=10)"
223],
224"metadata": {
225"colab": {
226"base_uri": "https://localhost:8080/"
227},
228"id": "7LIcK4A5QWYa",
229"outputId": "7609a3e0-9e5c-4859-aa3a-422d70de872a"
230},
231"execution_count": 20,
232"outputs": [
233{
234"output_type": "stream",
235"name": "stdout",
236"text": [
237"Epoch 1/10\n",
238"1875/1875 [==============================] - 134s 71ms/step - loss: 0.4358 - accuracy: 0.8425\n",
239"Epoch 2/10\n",
240"1875/1875 [==============================] - 128s 68ms/step - loss: 0.2832 - accuracy: 0.8957\n",
241"Epoch 3/10\n",
242"1875/1875 [==============================] - 124s 66ms/step - loss: 0.2402 - accuracy: 0.9115\n",
243"Epoch 4/10\n",
244"1875/1875 [==============================] - 133s 71ms/step - loss: 0.2101 - accuracy: 0.9212\n",
245"Epoch 5/10\n",
246"1875/1875 [==============================] - 124s 66ms/step - loss: 0.1834 - accuracy: 0.9311\n",
247"Epoch 6/10\n",
248"1875/1875 [==============================] - 120s 64ms/step - loss: 0.1645 - accuracy: 0.9382\n",
249"Epoch 7/10\n",
250"1875/1875 [==============================] - 122s 65ms/step - loss: 0.1472 - accuracy: 0.9445\n",
251"Epoch 8/10\n",
252"1875/1875 [==============================] - 124s 66ms/step - loss: 0.1311 - accuracy: 0.9505\n",
253"Epoch 9/10\n",
254"1875/1875 [==============================] - 122s 65ms/step - loss: 0.1148 - accuracy: 0.9565\n",
255"Epoch 10/10\n",
256"1875/1875 [==============================] - 121s 65ms/step - loss: 0.1023 - accuracy: 0.9611\n"
257]
258}
259]
260},
261{
262"cell_type": "code",
263"source": [
264"train_labels"
265],
266"metadata": {
267"colab": {
268"base_uri": "https://localhost:8080/"
269},
270"id": "wkar6_fjc_aB",
271"outputId": "336628f0-eacb-4bc4-d0dd-906b313e81ff"
272},
273"execution_count": 45,
274"outputs": [
275{
276"output_type": "execute_result",
277"data": {
278"text/plain": [
279"array([9, 0, 0, ..., 3, 0, 5], dtype=uint8)"
280]
281},
282"metadata": {},
283"execution_count": 45
284}
285]
286},
287{
288"cell_type": "code",
289"source": [
290"plt.plot(range(1, 11), model.history['accuracy'], marker='o')\n",
291"plt.xlabel('Epochs')\n",
292"plt.ylabel('Accuracy')\n",
293"plt.title('Training Accuracy over Epochs')"
294],
295"metadata": {
296"colab": {
297"base_uri": "https://localhost:8080/",
298"height": 489
299},
300"id": "OKqilKpDXv3D",
301"outputId": "31ef7d1b-99b4-48b7-d3f6-a953b23d92d7"
302},
303"execution_count": 30,
304"outputs": [
305{
306"output_type": "execute_result",
307"data": {
308"text/plain": [
309"Text(0.5, 1.0, 'Training Accuracy over Epochs')"
310]
311},
312"metadata": {},
313"execution_count": 30
314},
315{
316"output_type": "display_data",
317"data": {
318"text/plain": [
319"<Figure size 640x480 with 1 Axes>"
320],
321"image/png": "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\n"
322},
323"metadata": {}
324}
325]
326},
327{
328"cell_type": "code",
329"source": [
330"testing_accuracy = []\n",
331"for epoch in range(10):\n",
332" testing_results = cnn.evaluate(test, test_labels, verbose=0)\n",
333" testing_accuracy.append(testing_results[1])"
334],
335"metadata": {
336"id": "LXtuThIBYFIn"
337},
338"execution_count": 31,
339"outputs": []
340},
341{
342"cell_type": "code",
343"source": [
344"plt.plot(range(1, 11), testing_accuracy, marker='o', label='Testing Accuracy')"
345],
346"metadata": {
347"colab": {
348"base_uri": "https://localhost:8080/",
349"height": 447
350},
351"id": "ubNSWfTgYTX7",
352"outputId": "397ee654-720e-40f5-9583-d38fdd15d8cd"
353},
354"execution_count": 32,
355"outputs": [
356{
357"output_type": "execute_result",
358"data": {
359"text/plain": [
360"[<matplotlib.lines.Line2D at 0x7ca5b90c8b80>]"
361]
362},
363"metadata": {},
364"execution_count": 32
365},
366{
367"output_type": "display_data",
368"data": {
369"text/plain": [
370"<Figure size 640x480 with 1 Axes>"
371],
372"image/png": "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\n"
373},
374"metadata": {}
375}
376]
377},
378{
379"cell_type": "code",
380"source": [
381"uploaded_file = files.upload()\n",
382"uploaded_image_path = list(uploaded_file.keys())[0]"
383],
384"metadata": {
385"colab": {
386"base_uri": "https://localhost:8080/",
387"height": 73
388},
389"id": "uHpMx4y2RzxQ",
390"outputId": "81089118-b052-409f-c5f6-1168a474244a"
391},
392"execution_count": 23,
393"outputs": [
394{
395"output_type": "display_data",
396"data": {
397"text/plain": [
398"<IPython.core.display.HTML object>"
399],
400"text/html": [
401"\n",
402" <input type=\"file\" id=\"files-9fee1ebd-772a-4401-be69-08f68113fd98\" name=\"files[]\" multiple disabled\n",
403" style=\"border:none\" />\n",
404" <output id=\"result-9fee1ebd-772a-4401-be69-08f68113fd98\">\n",
405" Upload widget is only available when the cell has been executed in the\n",
406" current browser session. Please rerun this cell to enable.\n",
407" </output>\n",
408" <script>// Copyright 2017 Google LLC\n",
409"//\n",
410"// Licensed under the Apache License, Version 2.0 (the \"License\");\n",
411"// you may not use this file except in compliance with the License.\n",
412"// You may obtain a copy of the License at\n",
413"//\n",
414"// http://www.apache.org/licenses/LICENSE-2.0\n",
415"//\n",
416"// Unless required by applicable law or agreed to in writing, software\n",
417"// distributed under the License is distributed on an \"AS IS\" BASIS,\n",
418"// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
419"// See the License for the specific language governing permissions and\n",
420"// limitations under the License.\n",
421"\n",
422"/**\n",
423" * @fileoverview Helpers for google.colab Python module.\n",
424" */\n",
425"(function(scope) {\n",
426"function span(text, styleAttributes = {}) {\n",
427" const element = document.createElement('span');\n",
428" element.textContent = text;\n",
429" for (const key of Object.keys(styleAttributes)) {\n",
430" element.style[key] = styleAttributes[key];\n",
431" }\n",
432" return element;\n",
433"}\n",
434"\n",
435"// Max number of bytes which will be uploaded at a time.\n",
436"const MAX_PAYLOAD_SIZE = 100 * 1024;\n",
437"\n",
438"function _uploadFiles(inputId, outputId) {\n",
439" const steps = uploadFilesStep(inputId, outputId);\n",
440" const outputElement = document.getElementById(outputId);\n",
441" // Cache steps on the outputElement to make it available for the next call\n",
442" // to uploadFilesContinue from Python.\n",
443" outputElement.steps = steps;\n",
444"\n",
445" return _uploadFilesContinue(outputId);\n",
446"}\n",
447"\n",
448"// This is roughly an async generator (not supported in the browser yet),\n",
449"// where there are multiple asynchronous steps and the Python side is going\n",
450"// to poll for completion of each step.\n",
451"// This uses a Promise to block the python side on completion of each step,\n",
452"// then passes the result of the previous step as the input to the next step.\n",
453"function _uploadFilesContinue(outputId) {\n",
454" const outputElement = document.getElementById(outputId);\n",
455" const steps = outputElement.steps;\n",
456"\n",
457" const next = steps.next(outputElement.lastPromiseValue);\n",
458" return Promise.resolve(next.value.promise).then((value) => {\n",
459" // Cache the last promise value to make it available to the next\n",
460" // step of the generator.\n",
461" outputElement.lastPromiseValue = value;\n",
462" return next.value.response;\n",
463" });\n",
464"}\n",
465"\n",
466"/**\n",
467" * Generator function which is called between each async step of the upload\n",
468" * process.\n",
469" * @param {string} inputId Element ID of the input file picker element.\n",
470" * @param {string} outputId Element ID of the output display.\n",
471" * @return {!Iterable<!Object>} Iterable of next steps.\n",
472" */\n",
473"function* uploadFilesStep(inputId, outputId) {\n",
474" const inputElement = document.getElementById(inputId);\n",
475" inputElement.disabled = false;\n",
476"\n",
477" const outputElement = document.getElementById(outputId);\n",
478" outputElement.innerHTML = '';\n",
479"\n",
480" const pickedPromise = new Promise((resolve) => {\n",
481" inputElement.addEventListener('change', (e) => {\n",
482" resolve(e.target.files);\n",
483" });\n",
484" });\n",
485"\n",
486" const cancel = document.createElement('button');\n",
487" inputElement.parentElement.appendChild(cancel);\n",
488" cancel.textContent = 'Cancel upload';\n",
489" const cancelPromise = new Promise((resolve) => {\n",
490" cancel.onclick = () => {\n",
491" resolve(null);\n",
492" };\n",
493" });\n",
494"\n",
495" // Wait for the user to pick the files.\n",
496" const files = yield {\n",
497" promise: Promise.race([pickedPromise, cancelPromise]),\n",
498" response: {\n",
499" action: 'starting',\n",
500" }\n",
501" };\n",
502"\n",
503" cancel.remove();\n",
504"\n",
505" // Disable the input element since further picks are not allowed.\n",
506" inputElement.disabled = true;\n",
507"\n",
508" if (!files) {\n",
509" return {\n",
510" response: {\n",
511" action: 'complete',\n",
512" }\n",
513" };\n",
514" }\n",
515"\n",
516" for (const file of files) {\n",
517" const li = document.createElement('li');\n",
518" li.append(span(file.name, {fontWeight: 'bold'}));\n",
519" li.append(span(\n",
520" `(${file.type || 'n/a'}) - ${file.size} bytes, ` +\n",
521" `last modified: ${\n",
522" file.lastModifiedDate ? file.lastModifiedDate.toLocaleDateString() :\n",
523" 'n/a'} - `));\n",
524" const percent = span('0% done');\n",
525" li.appendChild(percent);\n",
526"\n",
527" outputElement.appendChild(li);\n",
528"\n",
529" const fileDataPromise = new Promise((resolve) => {\n",
530" const reader = new FileReader();\n",
531" reader.onload = (e) => {\n",
532" resolve(e.target.result);\n",
533" };\n",
534" reader.readAsArrayBuffer(file);\n",
535" });\n",
536" // Wait for the data to be ready.\n",
537" let fileData = yield {\n",
538" promise: fileDataPromise,\n",
539" response: {\n",
540" action: 'continue',\n",
541" }\n",
542" };\n",
543"\n",
544" // Use a chunked sending to avoid message size limits. See b/62115660.\n",
545" let position = 0;\n",
546" do {\n",
547" const length = Math.min(fileData.byteLength - position, MAX_PAYLOAD_SIZE);\n",
548" const chunk = new Uint8Array(fileData, position, length);\n",
549" position += length;\n",
550"\n",
551" const base64 = btoa(String.fromCharCode.apply(null, chunk));\n",
552" yield {\n",
553" response: {\n",
554" action: 'append',\n",
555" file: file.name,\n",
556" data: base64,\n",
557" },\n",
558" };\n",
559"\n",
560" let percentDone = fileData.byteLength === 0 ?\n",
561" 100 :\n",
562" Math.round((position / fileData.byteLength) * 100);\n",
563" percent.textContent = `${percentDone}% done`;\n",
564"\n",
565" } while (position < fileData.byteLength);\n",
566" }\n",
567"\n",
568" // All done.\n",
569" yield {\n",
570" response: {\n",
571" action: 'complete',\n",
572" }\n",
573" };\n",
574"}\n",
575"\n",
576"scope.google = scope.google || {};\n",
577"scope.google.colab = scope.google.colab || {};\n",
578"scope.google.colab._files = {\n",
579" _uploadFiles,\n",
580" _uploadFilesContinue,\n",
581"};\n",
582"})(self);\n",
583"</script> "
584]
585},
586"metadata": {}
587},
588{
589"output_type": "stream",
590"name": "stdout",
591"text": [
592"Saving pngwing.com (3).png to pngwing.com (3).png\n"
593]
594}
595]
596},
597{
598"cell_type": "code",
599"source": [
600"test_image = test[0]\n",
601"test_image = np.expand_dims(test_image, axis=0)\n",
602"test_image = test_image / 255.0\n",
603"\n",
604"predicted_label = cnn.predict(test_image)\n",
605"predicted_label = np.argmax(predicted_label)\n",
606"\n",
607"class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']\n",
608"predicted_class = class_names[predicted_label]\n",
609"\n",
610"plt.imshow(test[0].reshape(28, 28), cmap='gray')\n",
611"plt.title(f\"Predicted Class: {predicted_class}\")\n",
612"plt.axis('off')\n",
613"plt.show()\n"
614],
615"metadata": {
616"colab": {
617"base_uri": "https://localhost:8080/",
618"height": 445
619},
620"id": "vWQp4SSDcT4Z",
621"outputId": "a6e4a2a2-affd-4b6c-a957-f3f601f073b0"
622},
623"execution_count": 46,
624"outputs": [
625{
626"output_type": "stream",
627"name": "stdout",
628"text": [
629"1/1 [==============================] - 0s 25ms/step\n"
630]
631},
632{
633"output_type": "display_data",
634"data": {
635"text/plain": [
636"<Figure size 640x480 with 1 Axes>"
637],
638"image/png": "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\n"
639},
640"metadata": {}
641}
642]
643}
644]
645}