{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "fcnn.ipynb", "provenance": [], "collapsed_sections": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" }, "accelerator": "GPU" }, "cells": [ { "cell_type": "markdown", "source": [ "Skup podataka 1 (klasifikacija)" ], "metadata": { "id": "Sx3kuTWnryMu" } }, { "cell_type": "code", "execution_count": 1, "metadata": { "id": "V-j3D7ZDhxOl" }, "outputs": [], "source": [ "from sklearn import datasets" ] }, { "cell_type": "code", "source": [ "data = datasets.load_breast_cancer()" ], "metadata": { "id": "1JWeUSyJrxLz" }, "execution_count": 2, "outputs": [] }, { "cell_type": "markdown", "source": [ "Merenja" ], "metadata": { "id": "N_nOppq0tKVk" } }, { "cell_type": "code", "source": [ "data.data" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Wjvd-3oBtdpW", "outputId": "f14d5464-c985-4360-ec0b-c09412eeb835" }, "execution_count": 3, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([[1.799e+01, 1.038e+01, 1.228e+02, ..., 2.654e-01, 4.601e-01,\n", " 1.189e-01],\n", " [2.057e+01, 1.777e+01, 1.329e+02, ..., 1.860e-01, 2.750e-01,\n", " 8.902e-02],\n", " [1.969e+01, 2.125e+01, 1.300e+02, ..., 2.430e-01, 3.613e-01,\n", " 8.758e-02],\n", " ...,\n", " [1.660e+01, 2.808e+01, 1.083e+02, ..., 1.418e-01, 2.218e-01,\n", " 7.820e-02],\n", " [2.060e+01, 2.933e+01, 1.401e+02, ..., 2.650e-01, 4.087e-01,\n", " 1.240e-01],\n", " [7.760e+00, 2.454e+01, 4.792e+01, ..., 0.000e+00, 2.871e-01,\n", " 7.039e-02]])" ] }, "metadata": {}, "execution_count": 3 } ] }, { "cell_type": "markdown", "source": [ "Nazivi atributa" ], "metadata": { "id": "PCTV3tR3tGfP" } }, { "cell_type": "code", "source": [ "data.feature_names" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "eIOQ2r3WsNjc", "outputId": "f9f7d9a0-5ae2-4a30-9127-610ee1254b18" }, "execution_count": 4, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array(['mean radius', 'mean texture', 'mean perimeter', 'mean area',\n", " 'mean smoothness', 'mean compactness', 'mean concavity',\n", " 'mean concave points', 'mean symmetry', 'mean fractal dimension',\n", " 'radius error', 'texture error', 'perimeter error', 'area error',\n", " 'smoothness error', 'compactness error', 'concavity error',\n", " 'concave points error', 'symmetry error',\n", " 'fractal dimension error', 'worst radius', 'worst texture',\n", " 'worst perimeter', 'worst area', 'worst smoothness',\n", " 'worst compactness', 'worst concavity', 'worst concave points',\n", " 'worst symmetry', 'worst fractal dimension'], dtype=' Sigmoid, ReLu, Tanh, LeakyReLu.\n", "\n", "Samo kod prvog sloja postoji input_dim, jer je izlaz iz jednog sloja ulaz u naredni sloj.\n", "\n", "Izlaz ce biti samo jedan neuron i aktivaciona f-ja sigmoidna, ako je izlaz manji od 0.5 onda je izlaz 0, a ako je veci od 0.5 izlaz je 1." ], "metadata": { "id": "Zeivhvk41HYh" } }, { "cell_type": "code", "source": [ "model = Sequential()\n", "model.add(Dense(input_dim=X_train.shape[1], units=100, activation='relu'))\n", "model.add(Dense(units=40, activation='relu'))\n", "model.add(Dense(units=1, activation='sigmoid'))\n", "model.summary()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "qKso0x4Pn5th", "outputId": "614cc227-974b-456d-b0f5-7d95c0a14128" }, "execution_count": 20, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " dense (Dense) (None, 100) 3100 \n", " \n", " dense_1 (Dense) (None, 40) 4040 \n", " \n", " dense_2 (Dense) (None, 1) 41 \n", " \n", "=================================================================\n", "Total params: 7,181\n", "Trainable params: 7,181\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ] }, { "cell_type": "markdown", "source": [ "Optimizer - Adam (kod kompozicije funkcija, kao varijanta gradijentnog spusta)\n", "\n", "Loss - binarna klasifikacija (binary_crossentropy), funkcija greske za binarnu klasifikaciju\n", "-(p(x) * log q(x) + (1 - p(x)) * log(1 - q(x)))\n", "\n", "Nije bilo greske:\n", "\n", "klasa 0: prvi clan nula\n", "\n", "klasa 1: drugi clan 0\n", "\n", "klasa 0: drugi clan (1-0)*log(1-1) ... greska je 0\n", "\n", "klasa 1: prvi clan 1 * log(1) ... greska je 0\n", "\n", "Sa greskom:\n", "\n", "klasa 0: Nula je a predvideli smo 1, prvi clan ok, drugi clan: (1-0) * log(1-1)! log(0) = -8, greska je velika\n", "\n", "Osim funkcije greske, moze da se meri i tacnost (accuracy)" ], "metadata": { "id": "oppoGxRO8aG3" } }, { "cell_type": "code", "source": [ "model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])" ], "metadata": { "id": "iAY-da-In_pT" }, "execution_count": 21, "outputs": [] }, { "cell_type": "markdown", "source": [ "Pokretanje trening skupa:\n", "\n", "batch_size - nakon jedne instance (x1, x2 ... xn) koja se provuce kroz mrezu dobije se loss (binarna klasifikacija - 0 ili 1, zatim se to proveri da li slaze sa onim sto je stvarno izlaz (binary cross-entropy)), dalje moze da se uradi backpropagation da bi se izracunali gradijenti (nakon jedne instance se racunaju gradijenti i poprave se tezine); gradijenti ne moraju da se racunaju nakon samo jedne instance, moze se dogoditi da je outlier, pa se onda npr. uzme ceo trening provuce kroz mrezu i izracuna se ukupan loss i onda na osnovu toga racuna gradijente i racuna tezine. Druga varijanta bi dosta dugo trajala, pa se uvodi stohasticki gradijent (slucajna promenljiva kojoj je matematicko ocekivanje jednako pravom gradijentu) i na osnovu njega se radi promena. Najbolja varijanta sa gradijentom je mini-batch gradijent, koji je izmedju pravog i stohastickog gradijenta, ne ceka sve instance i ne radi posle samo jedne instance, vec saceka neki broj instanci.\n", "batch_size - koliko ce se instanci propustiti kroz mrezu pa se tek posle uradi azuriranje gradijenta.\n", "\n", "epochs - koliko puta ce se proci kroz ceo X_train,\n", "\n", " validation_split - dalje se trening deli na validacioni koji se koristi u toku treninga da se vidi kako radi, da ne dodje do overfittinga (podesavanje hiperparametara, npr. broj neurona itd.)\n", " \n", " verbose - ispis sta svaka epoha radi, koliko je trebalo vremena, loss i accuracy" ], "metadata": { "id": "24rOFdi6_MIe" } }, { "cell_type": "code", "source": [ "history = model.fit(X_train, y_train, batch_size=64, epochs=20, validation_split=0.2)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "gF31rSh6oDCd", "outputId": "ce87f1ce-7948-44e9-9440-4d3652b3a188" }, "execution_count": 22, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1/20\n", "5/5 [==============================] - 3s 55ms/step - loss: 0.5302 - accuracy: 0.8365 - val_loss: 0.4567 - val_accuracy: 0.8625\n", "Epoch 2/20\n", "5/5 [==============================] - 0s 10ms/step - loss: 0.3698 - accuracy: 0.9214 - val_loss: 0.3395 - val_accuracy: 0.9000\n", "Epoch 3/20\n", "5/5 [==============================] - 0s 10ms/step - loss: 0.2711 - accuracy: 0.9403 - val_loss: 0.2566 - val_accuracy: 0.9375\n", "Epoch 4/20\n", "5/5 [==============================] - 0s 9ms/step - loss: 0.2082 - accuracy: 0.9465 - val_loss: 0.1980 - val_accuracy: 0.9375\n", "Epoch 5/20\n", "5/5 [==============================] - 0s 10ms/step - loss: 0.1673 - accuracy: 0.9591 - val_loss: 0.1589 - val_accuracy: 0.9375\n", "Epoch 6/20\n", "5/5 [==============================] - 0s 10ms/step - loss: 0.1417 - accuracy: 0.9654 - val_loss: 0.1308 - val_accuracy: 0.9750\n", "Epoch 7/20\n", "5/5 [==============================] - 0s 10ms/step - loss: 0.1251 - accuracy: 0.9654 - val_loss: 0.1103 - val_accuracy: 0.9875\n", "Epoch 8/20\n", "5/5 [==============================] - 0s 10ms/step - loss: 0.1115 - accuracy: 0.9717 - val_loss: 0.0972 - val_accuracy: 0.9875\n", "Epoch 9/20\n", "5/5 [==============================] - 0s 11ms/step - loss: 0.1019 - accuracy: 0.9748 - val_loss: 0.0864 - val_accuracy: 1.0000\n", "Epoch 10/20\n", "5/5 [==============================] - 0s 10ms/step - loss: 0.0946 - accuracy: 0.9748 - val_loss: 0.0783 - val_accuracy: 1.0000\n", "Epoch 11/20\n", "5/5 [==============================] - 0s 10ms/step - loss: 0.0891 - accuracy: 0.9811 - val_loss: 0.0715 - val_accuracy: 1.0000\n", "Epoch 12/20\n", "5/5 [==============================] - 0s 11ms/step - loss: 0.0846 - accuracy: 0.9811 - val_loss: 0.0664 - val_accuracy: 1.0000\n", "Epoch 13/20\n", "5/5 [==============================] - 0s 11ms/step - loss: 0.0810 - accuracy: 0.9811 - val_loss: 0.0620 - val_accuracy: 1.0000\n", "Epoch 14/20\n", "5/5 [==============================] - 0s 10ms/step - loss: 0.0771 - accuracy: 0.9811 - val_loss: 0.0579 - val_accuracy: 1.0000\n", "Epoch 15/20\n", "5/5 [==============================] - 0s 10ms/step - loss: 0.0742 - accuracy: 0.9811 - val_loss: 0.0554 - val_accuracy: 1.0000\n", "Epoch 16/20\n", "5/5 [==============================] - 0s 10ms/step - loss: 0.0713 - accuracy: 0.9811 - val_loss: 0.0513 - val_accuracy: 1.0000\n", "Epoch 17/20\n", "5/5 [==============================] - 0s 10ms/step - loss: 0.0687 - accuracy: 0.9811 - val_loss: 0.0485 - val_accuracy: 1.0000\n", "Epoch 18/20\n", "5/5 [==============================] - 0s 11ms/step - loss: 0.0659 - accuracy: 0.9811 - val_loss: 0.0461 - val_accuracy: 1.0000\n", "Epoch 19/20\n", "5/5 [==============================] - 0s 10ms/step - loss: 0.0639 - accuracy: 0.9811 - val_loss: 0.0446 - val_accuracy: 1.0000\n", "Epoch 20/20\n", "5/5 [==============================] - 0s 10ms/step - loss: 0.0616 - accuracy: 0.9811 - val_loss: 0.0421 - val_accuracy: 1.0000\n" ] } ] }, { "cell_type": "code", "source": [ "pip install ann_visualizer" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "2reQpFLKF8bt", "outputId": "b9ee84df-6ff8-4748-a3d4-0b62879ed6ad" }, "execution_count": 26, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Requirement already satisfied: ann_visualizer in /usr/local/lib/python3.7/dist-packages (2.5)\n" ] } ] }, { "cell_type": "code", "source": [ "from ann_visualizer.visualize import ann_viz;" ], "metadata": { "id": "_kcAIbmgGMu7" }, "execution_count": 27, "outputs": [] }, { "cell_type": "code", "source": [ "ann_viz(model, view=True, title=\"test\", filename=\"visualized\")" ], "metadata": { "id": "qO_6X1buGl8k" }, "execution_count": 29, "outputs": [] }, { "cell_type": "code", "source": [ "history.epoch" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "EUbVgdutD3-L", "outputId": "e5bd59e4-44c0-463f-f3db-ac7ac915f163" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]" ] }, "metadata": {}, "execution_count": 231 } ] }, { "cell_type": "code", "source": [ "from matplotlib import pyplot as plt" ], "metadata": { "id": "CmTvhOiFoJsb" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "Kako se kroz epohe kretao loss:" ], "metadata": { "id": "K2zvPkE8D_3o" } }, { "cell_type": "code", "source": [ "epochs = history.epoch\n", "plt.plot(epochs, history.history['loss'])\n", "plt.plot(epochs, history.history['val_loss'])" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 283 }, "id": "dPoCecWwoKzk", "outputId": "bfdaac91-e0a8-4b63-b581-277b4284b382" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[]" ] }, "metadata": {}, "execution_count": 233 }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "source": [ "plt.plot(epochs, history.history['accuracy'])\n", "plt.plot(epochs, history.history['val_accuracy'])" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 284 }, "id": "MJpq_PEBoQTT", "outputId": "3a13860c-7f1a-491a-9127-7564c5c9a83c" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[]" ] }, "metadata": {}, "execution_count": 234 }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "Pokretanje na test skupu\n", "\n", "Slicno ponasanje kao na validacionom skupu." ], "metadata": { "id": "NDQlUj03MKXm" } }, { "cell_type": "code", "source": [ "model.evaluate(X_test, y_test, batch_size=64)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "j9qI4bbZoRHH", "outputId": "ce60c889-af9f-400e-ea00-1a9abce7d6e6" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "3/3 [==============================] - 0s 4ms/step - loss: 0.0791 - accuracy: 0.9708\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "[0.079063281416893, 0.9707602262496948]" ] }, "metadata": {}, "execution_count": 235 } ] }, { "cell_type": "markdown", "source": [ "Skup podataka 2 (regresija)" ], "metadata": { "id": "Tqfoy0XwocWl" } }, { "cell_type": "markdown", "source": [ "Izlaz iz mreze ce biti realan broj, nece se koristiti sigmoidna funkcija." ], "metadata": { "id": "MrqDBgk6N3i2" } }, { "cell_type": "code", "source": [ "import numpy as np" ], "metadata": { "id": "o2u2R2peoUdQ" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "x_new = np.random.rand(X_train.shape[1])\n", "x_new = x_new.reshape(1,-1)\n", "# x_new.shape\n", "y_pred = model.predict(x_new)\n", "if y_pred < 0.5:\n", " print('0')\n", "else:\n", " print('1')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "67OXuSK4od4-", "outputId": "f1c6d7ba-9ad3-43be-fdfa-d5bde9d43e6c" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "0\n" ] } ] }, { "cell_type": "code", "source": [ "from tensorflow.keras.datasets import boston_housing" ], "metadata": { "id": "WVVUQDVZojDB" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "(X_train, y_train), (X_test, y_test) = boston_housing.load_data()" ], "metadata": { "id": "CtO0VIVDos5F" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "X_train.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Mx-qvrayotTl", "outputId": "856603a8-bfa7-447b-8047-907aa3344764" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(404, 13)" ] }, "metadata": {}, "execution_count": 240 } ] }, { "cell_type": "code", "source": [ "X_test.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "J18nkwLsotnW", "outputId": "1b2f2c44-9fc4-4c16-a828-a720998deb06" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(102, 13)" ] }, "metadata": {}, "execution_count": 241 } ] }, { "cell_type": "code", "source": [ "X_train[0]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "TDuqhqW2ozix", "outputId": "7e21ac31-f96c-4301-9c2b-f03eb744315e" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([ 1.23247, 0. , 8.14 , 0. , 0.538 , 6.142 ,\n", " 91.7 , 3.9769 , 4. , 307. , 21. , 396.9 ,\n", " 18.72 ])" ] }, "metadata": {}, "execution_count": 242 } ] }, { "cell_type": "code", "source": [ "y_test" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "DQJ5ImLcOR4Q", "outputId": "a4d65d3b-2f1a-41c7-a64d-cb64029cb6e4" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([ 7.2, 18.8, 19. , 27. , 22.2, 24.5, 31.2, 22.9, 20.5, 23.2, 18.6,\n", " 14.5, 17.8, 50. , 20.8, 24.3, 24.2, 19.8, 19.1, 22.7, 12. , 10.2,\n", " 20. , 18.5, 20.9, 23. , 27.5, 30.1, 9.5, 22. , 21.2, 14.1, 33.1,\n", " 23.4, 20.1, 7.4, 15.4, 23.8, 20.1, 24.5, 33. , 28.4, 14.1, 46.7,\n", " 32.5, 29.6, 28.4, 19.8, 20.2, 25. , 35.4, 20.3, 9.7, 14.5, 34.9,\n", " 26.6, 7.2, 50. , 32.4, 21.6, 29.8, 13.1, 27.5, 21.2, 23.1, 21.9,\n", " 13. , 23.2, 8.1, 5.6, 21.7, 29.6, 19.6, 7. , 26.4, 18.9, 20.9,\n", " 28.1, 35.4, 10.2, 24.3, 43.1, 17.6, 15.4, 16.2, 27.1, 21.4, 21.5,\n", " 22.4, 25. , 16.6, 18.6, 22. , 42.8, 35.1, 21.5, 36. , 21.9, 24.1,\n", " 50. , 26.7, 25. ])" ] }, "metadata": {}, "execution_count": 243 } ] }, { "cell_type": "code", "source": [ "from sklearn.preprocessing import StandardScaler" ], "metadata": { "id": "418_Fqi2o1Vd" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "scaler = StandardScaler()\n", "scaler.fit(X_train)\n", "X_train = scaler.transform(X_train)\n", "X_test = scaler.transform(X_test)" ], "metadata": { "id": "nUEFLoC1o3oQ" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "X_train[0]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "wYFb_UtuOjDL", "outputId": "7e78d7b3-0d39-4455-e386-faaa24345051" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([-0.27224633, -0.48361547, -0.43576161, -0.25683275, -0.1652266 ,\n", " -0.1764426 , 0.81306188, 0.1166983 , -0.62624905, -0.59517003,\n", " 1.14850044, 0.44807713, 0.8252202 ])" ] }, "metadata": {}, "execution_count": 246 } ] }, { "cell_type": "code", "source": [ "X_test" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "rCtetAZIOvhl", "outputId": "84fb81e0-ce85-4ece-8a86-acb43ab85d66" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([[ 1.55369355, -0.48361547, 1.0283258 , ..., 0.78447637,\n", " -3.48459553, 2.25092074],\n", " [-0.39242675, -0.48361547, -0.16087773, ..., -0.30759583,\n", " 0.42733126, 0.47880119],\n", " [-0.39982927, -0.48361547, -0.86940196, ..., 0.78447637,\n", " 0.44807713, -0.41415936],\n", " ...,\n", " [-0.20709507, -0.48361547, 1.24588095, ..., -1.71818909,\n", " 0.37051949, -1.49344089],\n", " [-0.36698601, -0.48361547, -0.72093526, ..., -0.48960787,\n", " 0.39275481, -0.41829982],\n", " [-0.0889679 , -0.48361547, 1.24588095, ..., -1.71818909,\n", " -1.21946544, -0.40449827]])" ] }, "metadata": {}, "execution_count": 247 } ] }, { "cell_type": "markdown", "source": [ "Aktivaciona funkcija ReLu - nije diferencijabilna svuda. Mala je verovatnoca da ce biti tacka u kojoj funkcija nije diferencijabilna.\n", "Kada je f-ja nula gradijent je nula, kada je y(x) = x gradijent je 1.\n", "\n", "Kada se resava regresioni problem ne postavlja se aktivaciona funkcija." ], "metadata": { "id": "W1awDvIBPDP9" } }, { "cell_type": "code", "source": [ "model = Sequential()\n", "model.add(Dense(input_dim=X_train.shape[1], units=100, activation='relu'))\n", "# model.add(Dense(input_dim=X_train.shape[1], units=50, activation='relu'))\n", "model.add(Dense(units=1))\n", "model.summary()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Q2mrvuqTo6XK", "outputId": "ac11cbdf-24fd-486b-8705-1f390a4b1645" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Model: \"sequential_7\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " dense_18 (Dense) (None, 100) 1400 \n", " \n", " dense_19 (Dense) (None, 1) 101 \n", " \n", "=================================================================\n", "Total params: 1,501\n", "Trainable params: 1,501\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ] }, { "cell_type": "code", "source": [ "model.compile(optimizer='adam', loss='mse', metrics=['mae'])" ], "metadata": { "id": "YtafEf6Ho6rU" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "batch_size se stvlja uglavnom da bude neki stepen dvojke." ], "metadata": { "id": "cGXTMVS2Q_J9" } }, { "cell_type": "code", "source": [ "history = model.fit(X_train, y_train, batch_size=32, epochs=20, validation_split=0.2)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "CGtGSzlOo659", "outputId": "6b332ab3-7737-458d-d65b-0d471f5799b7" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1/20\n", "11/11 [==============================] - 1s 19ms/step - loss: 553.7639 - mae: 21.7449 - val_loss: 612.3683 - val_mae: 23.0314\n", "Epoch 2/20\n", "11/11 [==============================] - 0s 6ms/step - loss: 533.3929 - mae: 21.2841 - val_loss: 590.5496 - val_mae: 22.5719\n", "Epoch 3/20\n", "11/11 [==============================] - 0s 6ms/step - loss: 512.0575 - mae: 20.8111 - val_loss: 568.5195 - val_mae: 22.0990\n", "Epoch 4/20\n", "11/11 [==============================] - 0s 8ms/step - loss: 490.8699 - mae: 20.3244 - val_loss: 544.6113 - val_mae: 21.5795\n", "Epoch 5/20\n", "11/11 [==============================] - 0s 7ms/step - loss: 467.4664 - mae: 19.7772 - val_loss: 519.0213 - val_mae: 21.0037\n", "Epoch 6/20\n", "11/11 [==============================] - 0s 6ms/step - loss: 442.1212 - mae: 19.1711 - val_loss: 491.6043 - val_mae: 20.3677\n", "Epoch 7/20\n", "11/11 [==============================] - 0s 6ms/step - loss: 414.6958 - mae: 18.4892 - val_loss: 461.1874 - val_mae: 19.6422\n", "Epoch 8/20\n", "11/11 [==============================] - 0s 5ms/step - loss: 384.7002 - mae: 17.7220 - val_loss: 429.4667 - val_mae: 18.8464\n", "Epoch 9/20\n", "11/11 [==============================] - 0s 6ms/step - loss: 354.0565 - mae: 16.8922 - val_loss: 396.1055 - val_mae: 17.9630\n", "Epoch 10/20\n", "11/11 [==============================] - 0s 8ms/step - loss: 322.4319 - mae: 15.9852 - val_loss: 361.8862 - val_mae: 17.0339\n", "Epoch 11/20\n", "11/11 [==============================] - 0s 5ms/step - loss: 290.4041 - mae: 15.0296 - val_loss: 327.2035 - val_mae: 16.0404\n", "Epoch 12/20\n", "11/11 [==============================] - 0s 7ms/step - loss: 257.8096 - mae: 14.0355 - val_loss: 292.9172 - val_mae: 14.9927\n", "Epoch 13/20\n", "11/11 [==============================] - 0s 7ms/step - loss: 227.5438 - mae: 13.0334 - val_loss: 261.3893 - val_mae: 13.9489\n", "Epoch 14/20\n", "11/11 [==============================] - 0s 5ms/step - loss: 199.6971 - mae: 12.0503 - val_loss: 230.9747 - val_mae: 12.8486\n", "Epoch 15/20\n", "11/11 [==============================] - 0s 7ms/step - loss: 173.9478 - mae: 11.0499 - val_loss: 203.7008 - val_mae: 11.7785\n", "Epoch 16/20\n", "11/11 [==============================] - 0s 6ms/step - loss: 151.7353 - mae: 10.1668 - val_loss: 180.2215 - val_mae: 10.8189\n", "Epoch 17/20\n", "11/11 [==============================] - 0s 5ms/step - loss: 133.2361 - mae: 9.3967 - val_loss: 160.4561 - val_mae: 10.0169\n", "Epoch 18/20\n", "11/11 [==============================] - 0s 4ms/step - loss: 117.6264 - mae: 8.7384 - val_loss: 143.8088 - val_mae: 9.3717\n", "Epoch 19/20\n", "11/11 [==============================] - 0s 6ms/step - loss: 104.5526 - mae: 8.1542 - val_loss: 128.8133 - val_mae: 8.7751\n", "Epoch 20/20\n", "11/11 [==============================] - 0s 7ms/step - loss: 93.0878 - mae: 7.6400 - val_loss: 116.5298 - val_mae: 8.2932\n" ] } ] }, { "cell_type": "code", "source": [ "plt.plot(history.epoch, history.history['loss'])\n", "plt.plot(history.epoch, history.history['val_loss'])" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 283 }, "id": "wS-Ktb5Co7LA", "outputId": "4c0a02fa-3188-4632-ab87-fc821220d722" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[]" ] }, "metadata": {}, "execution_count": 251 }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "source": [ "plt.plot(history.epoch, history.history['mae'])\n", "plt.plot(history.epoch, history.history['val_mae'])" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 283 }, "id": "JwJfrlo8pDJ5", "outputId": "af949097-15e9-4609-9362-6be4d3f139a2" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[]" ] }, "metadata": {}, "execution_count": 252 }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "source": [ "model.evaluate(X_test, y_test)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "s0B7C3S_pDGp", "outputId": "cb6766e1-4621-45d4-d264-403556138512" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "4/4 [==============================] - 0s 3ms/step - loss: 104.5060 - mae: 8.6380\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "[104.50599670410156, 8.637982368469238]" ] }, "metadata": {}, "execution_count": 253 } ] }, { "cell_type": "code", "source": [ "model.save('models/boston.hdf5')\n", "# model.save_weight()" ], "metadata": { "id": "3XTt8tjEpDDa" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "from tensorflow.keras.models import load_model" ], "metadata": { "id": "I4hWvlyepC_w" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "old_model = load_model('models/boston.hdf5')" ], "metadata": { "id": "LCO4fGnCpC8c" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "x_new = np.random.rand(X_train.shape[1])\n", "x_new = x_new.reshape(1, -1)\n", "x_new.shape\n", "# Za nove podatke koristi se predict tako da se dobije predvidjena vrednost za y\n", "old_model.predict(x_new)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "dUu5UdsbpCy1", "outputId": "47d822fc-9616-477a-9d58-f52ab47982b7" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "WARNING:tensorflow:5 out of the last 317 calls to .predict_function at 0x7f8686516320> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has experimental_relax_shapes=True option that relaxes argument shapes that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/guide/function#controlling_retracing and https://www.tensorflow.org/api_docs/python/tf/function for more details.\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "array([[6.032225]], dtype=float32)" ] }, "metadata": {}, "execution_count": 257 } ] }, { "cell_type": "markdown", "source": [ "Koriscenje FCNN za klasifikaciju slika (koje nisu u booji - grayscale)" ], "metadata": { "id": "m93uSm8IU5Cd" } }, { "cell_type": "code", "source": [ "from tensorflow.keras.datasets import mnist\n", "from matplotlib import pyplot as plt" ], "metadata": { "id": "P7FAagykpCmG" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "(X_train, y_train), (X_test, y_test) = mnist.load_data()" ], "metadata": { "id": "Y74hvjABpXYa" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "60000 slika\n", "\n", "28x28 dimenzije slike" ], "metadata": { "id": "DrYrSR9sVYsF" } }, { "cell_type": "code", "source": [ "X_train.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "c34Ie_JSpXVt", "outputId": "b1657516-8848-4b8b-bdf3-1b118979f4c7" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(60000, 28, 28)" ] }, "metadata": {}, "execution_count": 302 } ] }, { "cell_type": "code", "source": [ "X_test.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "YfrApCbfpXTS", "outputId": "53ce422c-fbae-412f-a849-5c6665f94347" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(10000, 28, 28)" ] }, "metadata": {}, "execution_count": 303 } ] }, { "cell_type": "code", "source": [ "plt.title(y_train[0])\n", "plt.imshow(X_train[0], cmap='gray')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 299 }, "id": "cva5m83-pXQi", "outputId": "bb860358-2911-4ab9-d769-b4f3e5b01276" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 304 }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "Slika se slaze po kolonama - dobije se vektor" ], "metadata": { "id": "CrV36KdSWC2D" } }, { "cell_type": "code", "source": [ "img_size = X_train.shape[1]\n", "X_train = X_train.reshape(X_train.shape[0], img_size * img_size)\n", "X_train.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "nctQM_cUpXN6", "outputId": "3a479125-23fc-42ce-cb94-c7cbb9bc5f0f" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(60000, 784)" ] }, "metadata": {}, "execution_count": 305 } ] }, { "cell_type": "code", "source": [ "X_test = X_test.reshape(X_test.shape[0], img_size * img_size)\n", "X_test.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "zHqaqabFpXK-", "outputId": "a5f67a83-05a0-4c9a-a3aa-1b72305a212f" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(10000, 784)" ] }, "metadata": {}, "execution_count": 306 } ] }, { "cell_type": "code", "source": [ "y_train[0]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Rm6eaTpIpXH0", "outputId": "f16b81d1-0ccf-4124-dd66-2a59c45345e7" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "5" ] }, "metadata": {}, "execution_count": 307 } ] }, { "cell_type": "code", "source": [ "# 0 - 1 0 0 0 0 0 0 0 0 0\n", "# 3 - 0 0 0 1 0 0 0 0 0 0" ], "metadata": { "id": "3nEc4nJTpXE_" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "from tensorflow.keras.utils import to_categorical" ], "metadata": { "id": "W-vWpFEPptY5" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "Na kraju treba da bude 10 neurona koji ce odredjivati koja je cifra. (OneHot Encoding)" ], "metadata": { "id": "hhBUKBmRW9Gs" } }, { "cell_type": "code", "source": [ "y_train = to_categorical(y_train, 10)" ], "metadata": { "id": "_mDvqQ5AptVn" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "y_train.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "ITk_zSDDptSv", "outputId": "0d8320dc-6ec6-4877-a204-170a1a888b54" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(60000, 10)" ] }, "metadata": {}, "execution_count": 310 } ] }, { "cell_type": "code", "source": [ "y_train[0]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "kLdsXkVHptPm", "outputId": "46a39c8d-dfa6-4675-f971-2a4cea4cb34b" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([0., 0., 0., 0., 0., 1., 0., 0., 0., 0.], dtype=float32)" ] }, "metadata": {}, "execution_count": 311 } ] }, { "cell_type": "code", "source": [ "y_test = to_categorical(y_test, 10)" ], "metadata": { "id": "vPM0dY0jX_yj" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "y_test.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "3DXntlPIYEDg", "outputId": "1347661a-01a2-43f2-cca9-81e6ad699265" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(10000, 10)" ] }, "metadata": {}, "execution_count": 313 } ] }, { "cell_type": "code", "source": [ "X_train[0]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "FM_UUBtPptM9", "outputId": "638e2905-2e3a-46a5-cbef-9df410c9ce79" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 18, 18, 18,\n", " 126, 136, 175, 26, 166, 255, 247, 127, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 30, 36, 94, 154, 170, 253,\n", " 253, 253, 253, 253, 225, 172, 253, 242, 195, 64, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 49, 238, 253, 253, 253,\n", " 253, 253, 253, 253, 253, 251, 93, 82, 82, 56, 39, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 219, 253,\n", " 253, 253, 253, 253, 198, 182, 247, 241, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 80, 156, 107, 253, 253, 205, 11, 0, 43, 154, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 14, 1, 154, 253, 90, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 139, 253, 190, 2, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 190, 253, 70,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35,\n", " 241, 225, 160, 108, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 81, 240, 253, 253, 119, 25, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 45, 186, 253, 253, 150, 27, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 16, 93, 252, 253, 187,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249,\n", " 253, 249, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 130,\n", " 183, 253, 253, 207, 2, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 148,\n", " 229, 253, 253, 253, 250, 182, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 114,\n", " 221, 253, 253, 253, 253, 201, 78, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 66,\n", " 213, 253, 253, 253, 253, 198, 81, 2, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 171,\n", " 219, 253, 253, 253, 253, 195, 80, 9, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 172,\n", " 226, 253, 253, 253, 253, 244, 133, 11, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 136, 253, 253, 253, 212, 135, 132, 16, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0], dtype=uint8)" ] }, "metadata": {}, "execution_count": 314 } ] }, { "cell_type": "code", "source": [ "# (0,255) -> (0,1)\n", "# X_train.astype('float')\n", "X_train = X_train / 255" ], "metadata": { "id": "Fe5hjC_9ptKT" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "X_train[0]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Q0zmpxfrptHS", "outputId": "3a1eeec0-c68d-4483-d02f-5c1f67fa58b0" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0.01176471, 0.07058824, 0.07058824,\n", " 0.07058824, 0.49411765, 0.53333333, 0.68627451, 0.10196078,\n", " 0.65098039, 1. , 0.96862745, 0.49803922, 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0.11764706, 0.14117647, 0.36862745, 0.60392157,\n", " 0.66666667, 0.99215686, 0.99215686, 0.99215686, 0.99215686,\n", " 0.99215686, 0.88235294, 0.6745098 , 0.99215686, 0.94901961,\n", " 0.76470588, 0.25098039, 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0.19215686, 0.93333333,\n", " 0.99215686, 0.99215686, 0.99215686, 0.99215686, 0.99215686,\n", " 0.99215686, 0.99215686, 0.99215686, 0.98431373, 0.36470588,\n", " 0.32156863, 0.32156863, 0.21960784, 0.15294118, 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0.07058824, 0.85882353, 0.99215686, 0.99215686,\n", " 0.99215686, 0.99215686, 0.99215686, 0.77647059, 0.71372549,\n", " 0.96862745, 0.94509804, 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0.31372549, 0.61176471, 0.41960784, 0.99215686, 0.99215686,\n", " 0.80392157, 0.04313725, 0. , 0.16862745, 0.60392157,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0.05490196,\n", " 0.00392157, 0.60392157, 0.99215686, 0.35294118, 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0.54509804,\n", " 0.99215686, 0.74509804, 0.00784314, 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0.04313725, 0.74509804, 0.99215686,\n", " 0.2745098 , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0.1372549 , 0.94509804, 0.88235294, 0.62745098,\n", " 0.42352941, 0.00392157, 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0.31764706, 0.94117647, 0.99215686, 0.99215686, 0.46666667,\n", " 0.09803922, 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0.17647059,\n", " 0.72941176, 0.99215686, 0.99215686, 0.58823529, 0.10588235,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0.0627451 , 0.36470588,\n", " 0.98823529, 0.99215686, 0.73333333, 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0.97647059, 0.99215686,\n", " 0.97647059, 0.25098039, 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0.18039216, 0.50980392,\n", " 0.71764706, 0.99215686, 0.99215686, 0.81176471, 0.00784314,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0.15294118,\n", " 0.58039216, 0.89803922, 0.99215686, 0.99215686, 0.99215686,\n", " 0.98039216, 0.71372549, 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0.09411765, 0.44705882, 0.86666667, 0.99215686, 0.99215686,\n", " 0.99215686, 0.99215686, 0.78823529, 0.30588235, 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0.09019608, 0.25882353, 0.83529412, 0.99215686,\n", " 0.99215686, 0.99215686, 0.99215686, 0.77647059, 0.31764706,\n", " 0.00784314, 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0.07058824, 0.67058824, 0.85882353,\n", " 0.99215686, 0.99215686, 0.99215686, 0.99215686, 0.76470588,\n", " 0.31372549, 0.03529412, 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0.21568627, 0.6745098 ,\n", " 0.88627451, 0.99215686, 0.99215686, 0.99215686, 0.99215686,\n", " 0.95686275, 0.52156863, 0.04313725, 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0.53333333, 0.99215686, 0.99215686, 0.99215686,\n", " 0.83137255, 0.52941176, 0.51764706, 0.0627451 , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. ])" ] }, "metadata": {}, "execution_count": 316 } ] }, { "cell_type": "code", "source": [ "X_train[0].dtype" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "EP8E0gfvptEl", "outputId": "aec779b0-e150-48ef-a240-27ed4d68fe44" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "dtype('float64')" ] }, "metadata": {}, "execution_count": 317 } ] }, { "cell_type": "code", "source": [ "X_train.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "1ITXT_PAptBh", "outputId": "d63590d0-0c56-406d-c4bb-80bef8fd8aa5" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(60000, 784)" ] }, "metadata": {}, "execution_count": 318 } ] }, { "cell_type": "code", "source": [ "from tensorflow.keras.models import Sequential\n", "from tensorflow.keras.layers import Dense" ], "metadata": { "id": "z2Himo4-ps92" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "model = Sequential()\n", "model.add(Dense(input_dim=X_train.shape[1], units=128, activation='relu'))\n", "model.add(Dense(units=64, activation='relu'))\n", "model.add(Dense(units=10, activation='softmax'))\n", "model.summary()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "2teoM5sjps7A", "outputId": "93b4b151-97d8-4068-8469-f304f8067fd9" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Model: \"sequential_10\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " dense_26 (Dense) (None, 128) 100480 \n", " \n", " dense_27 (Dense) (None, 64) 8256 \n", " \n", " dense_28 (Dense) (None, 10) 650 \n", " \n", "=================================================================\n", "Total params: 109,386\n", "Trainable params: 109,386\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ] }, { "cell_type": "code", "source": [ "from tensorflow.keras.optimizers import Adam\n", "from tensorflow.keras.losses import CategoricalCrossentropy" ], "metadata": { "id": "UP7T50GKps0c" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "model.compile(optimizer=Adam(), loss='categorical_crossentropy', metrics=['accuracy'])" ], "metadata": { "id": "Boyap8pipse1" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "history = model.fit(X_train, y_train, batch_size=128, epochs=10)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "FSKPF94NqDMu", "outputId": "8e5d751c-0759-422d-bf46-cb9a7b25d54e" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1/10\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.3315 - accuracy: 0.9072\n", "Epoch 2/10\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.1371 - accuracy: 0.9595\n", "Epoch 3/10\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0953 - accuracy: 0.9720\n", "Epoch 4/10\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0713 - accuracy: 0.9785\n", "Epoch 5/10\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0556 - accuracy: 0.9832\n", "Epoch 6/10\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0438 - accuracy: 0.9867\n", "Epoch 7/10\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0374 - accuracy: 0.9878\n", "Epoch 8/10\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0290 - accuracy: 0.9910\n", "Epoch 9/10\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0259 - accuracy: 0.9917\n", "Epoch 10/10\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0224 - accuracy: 0.9930\n" ] } ] }, { "cell_type": "code", "source": [ "plt.plot(history.epoch, history.history['loss'])" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 283 }, "id": "Gh1HOc0nqDAI", "outputId": "5590807f-bd11-4eeb-904e-369b1970cf92" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[]" ] }, "metadata": {}, "execution_count": 324 }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "source": [ "#X_test = X_test / 255" ], "metadata": { "id": "hs2pqyifrWwf" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "#y_test = to_categorical(y_test, 10)" ], "metadata": { "id": "AHP4hJ-3rYC0" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "X_test" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "ZlVuLx1qd8m7", "outputId": "4bfad379-aefc-4e73-aae2-148cf507bcbf" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([[0, 0, 0, ..., 0, 0, 0],\n", " [0, 0, 0, ..., 0, 0, 0],\n", " [0, 0, 0, ..., 0, 0, 0],\n", " ...,\n", " [0, 0, 0, ..., 0, 0, 0],\n", " [0, 0, 0, ..., 0, 0, 0],\n", " [0, 0, 0, ..., 0, 0, 0]], dtype=uint8)" ] }, "metadata": {}, "execution_count": 325 } ] }, { "cell_type": "code", "source": [ "y_test" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "aIMGNDbpeBAp", "outputId": "bea2b826-041c-4dc2-aac3-75140a027899" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([[0., 0., 0., ..., 1., 0., 0.],\n", " [0., 0., 1., ..., 0., 0., 0.],\n", " [0., 1., 0., ..., 0., 0., 0.],\n", " ...,\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 0.]], dtype=float32)" ] }, "metadata": {}, "execution_count": 326 } ] }, { "cell_type": "code", "source": [ "model.evaluate(X_test, y_test)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Am2WtlHyrZy0", "outputId": "7b73649a-9b38-4a4d-a16b-97cb8293874e" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "313/313 [==============================] - 1s 2ms/step - loss: 16.7045 - accuracy: 0.9779\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "[16.704484939575195, 0.9779000282287598]" ] }, "metadata": {}, "execution_count": 327 } ] }, { "cell_type": "code", "source": [ "y_pred = model.predict(X_test)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "syg7Ftq8rcTk", "outputId": "44f3bc9b-7981-45fd-bc8c-22646321b453" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "WARNING:tensorflow:6 out of the last 318 calls to .predict_function at 0x7f86813bf050> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has experimental_relax_shapes=True option that relaxes argument shapes that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/guide/function#controlling_retracing and https://www.tensorflow.org/api_docs/python/tf/function for more details.\n" ] } ] }, { "cell_type": "code", "source": [ "y_pred.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "81Eo4m0Zreov", "outputId": "13fcb2f5-296f-4e00-bf65-3b37dbac7b57" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(10000, 10)" ] }, "metadata": {}, "execution_count": 329 } ] }, { "cell_type": "code", "source": [ "y_pred[0]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "qRqRU23Vrf0W", "outputId": "9ee72ce9-47de-40c7-8ebd-f656864ebd3e" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([0., 0., 0., 0., 0., 0., 0., 1., 0., 0.], dtype=float32)" ] }, "metadata": {}, "execution_count": 330 } ] }, { "cell_type": "code", "source": [ "y_pred[1]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "qsI8pRM5rhl5", "outputId": "568825f3-c1ec-40b7-d48b-14046530e15f" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([0., 0., 1., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)" ] }, "metadata": {}, "execution_count": 331 } ] }, { "cell_type": "markdown", "source": [ "Za dobijanje indeksa gde je najveci broj (np.argmax())" ], "metadata": { "id": "SBbPT5VwfhJQ" } }, { "cell_type": "code", "source": [ "import numpy as np\n", "np.argmax(y_pred[0])" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "U3VVHL-UrkCa", "outputId": "f12c40ba-7b88-4e01-84de-fc6aa1d2a141" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "7" ] }, "metadata": {}, "execution_count": 332 } ] }, { "cell_type": "code", "source": [ "y_test[0]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "eUFCCciArlLu", "outputId": "97da500a-d7c1-4822-e10a-42f2bb5882e4" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([0., 0., 0., 0., 0., 0., 0., 1., 0., 0.], dtype=float32)" ] }, "metadata": {}, "execution_count": 333 } ] }, { "cell_type": "code", "source": [ "true_class = np.argmax(y_test)\n", "true_class" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "2LnkkaOlrmhp", "outputId": "46e65722-9a6d-4929-99e8-88898a29f012" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "7" ] }, "metadata": {}, "execution_count": 339 } ] }, { "cell_type": "markdown", "source": [ "Proverava se gde su nastale greske." ], "metadata": { "id": "D3xE0jxRgJGj" } }, { "cell_type": "code", "source": [ "errors = []\n", "for i in range(X_test.shape[0]):\n", " pred_class = np.argmax(y_pred[i])\n", " true_class = np.argmax(y_test[i])\n", " if pred_class != true_class:\n", " errors.append(i)" ], "metadata": { "id": "QHbV6P1Krogm" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "len(errors)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "T8-EEGvGrpeN", "outputId": "59bf3c52-12ef-4d0e-dc25-94340b2f49f3" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "221" ] }, "metadata": {}, "execution_count": 340 } ] }, { "cell_type": "code", "source": [ "import random" ], "metadata": { "id": "hcIYHksfrrIS" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "random_index = random.choice(errors)\n", "pred_label = np.argmax(y_pred[random_index])\n", "true_label = np.argmax(y_test[random_index])\n", "print(pred_label, true_label)\n", "plt.imshow(X_test[random_index].reshape(img_size, img_size), cmap='gray')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 301 }, "id": "G3-q4lPvruG7", "outputId": "62500d33-ea1b-4cde-fe3e-07927d65708a" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "5 6\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 343 }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] } ] }