diff --git a/sw_lab9-10_2.ipynb b/sw_lab9-10_2.ipynb index d96a151..9aee02c 100644 --- a/sw_lab9-10_2.ipynb +++ b/sw_lab9-10_2.ipynb @@ -6,7 +6,7 @@ "metadata": {}, "source": [ "### Aleksandra Jonas, Aleksandra Gronowska, Iwona Christop\n", - "# Zadanie 9-10 - AlexNet, VGG16, ResNet on village" + "# Zestaw 9-10/zadanie2 - AlexNet, VGG16, ResNet on village" ] }, { @@ -28,7 +28,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -125,7 +125,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -221,11 +221,11 @@ " \n", " dense_1 (Dense) (None, 4096) 16781312 \n", " \n", - " dense_2 (Dense) (None, 3) 12291 \n", + " dense_2 (Dense) (None, 12) 49164 \n", " \n", "=================================================================\n", - "Total params: 58,293,635\n", - "Trainable params: 58,293,635\n", + "Total params: 58,330,508\n", + "Trainable params: 58,330,508\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] @@ -249,7 +249,7 @@ " keras.layers.Flatten(),\n", " keras.layers.Dense(4096, activation='relu'),\n", " keras.layers.Dense(4096, activation='relu'),\n", - " keras.layers.Dense(3, activation='softmax')\n", + " keras.layers.Dense(12, activation='softmax')\n", "])\n", "\n", "model.compile(loss='sparse_categorical_crossentropy', optimizer=tf.optimizers.SGD(lr=.001), metrics=['accuracy'])\n", @@ -265,9 +265,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Training: 4772\n", - "Test: 1492\n", - "Validation: 1194\n" + "Training: 7430\n", + "Test: 2323\n", + "Validation: 1858\n" ] } ], @@ -292,18 +292,127 @@ "output_type": "stream", "text": [ "WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.\n", - "/var/folders/6b/j4d60ym516x2s6wymzj707rh0000gn/T/ipykernel_9542/953612165.py:6: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators.\n", - " alex = model.fit_generator(\n", - "2023-01-06 04:01:52.794677: W tensorflow/tsl/platform/profile_utils/cpu_utils.cc:128] Failed to get CPU frequency: 0 Hz\n" + "/var/folders/_h/ljwht4gd7lb99rm1hm78h7_00000gn/T/ipykernel_23432/2397086753.py:6: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators.\n", + " alex = model.fit_generator(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "149/149 [==============================] - ETA: 0s - loss: 0.5993 - accuracy: 0.7576\n", - "Epoch 1: val_accuracy improved from -inf to 0.41385, saving model to alex_2.h5\n", - "149/149 [==============================] - 167s 1s/step - loss: 0.5993 - accuracy: 0.7576 - val_loss: 0.9947 - val_accuracy: 0.4139\n" + "Epoch 1/25\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-01-06 20:01:38.622228: W tensorflow/tsl/platform/profile_utils/cpu_utils.cc:128] Failed to get CPU frequency: 0 Hz\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "232/232 [==============================] - ETA: 0s - loss: 2.1314 - accuracy: 0.2501\n", + "Epoch 1: val_accuracy improved from -inf to 0.44235, saving model to alex_2.h5\n", + "232/232 [==============================] - 223s 956ms/step - loss: 2.1314 - accuracy: 0.2501 - val_loss: 1.6157 - val_accuracy: 0.4423\n", + "Epoch 2/25\n", + "232/232 [==============================] - ETA: 0s - loss: 1.3779 - accuracy: 0.5031\n", + "Epoch 2: val_accuracy improved from 0.44235 to 0.60614, saving model to alex_2.h5\n", + "232/232 [==============================] - 264s 1s/step - loss: 1.3779 - accuracy: 0.5031 - val_loss: 1.1473 - val_accuracy: 0.6061\n", + "Epoch 3/25\n", + "232/232 [==============================] - ETA: 0s - loss: 1.0262 - accuracy: 0.6358\n", + "Epoch 3: val_accuracy improved from 0.60614 to 0.67726, saving model to alex_2.h5\n", + "232/232 [==============================] - 266s 1s/step - loss: 1.0262 - accuracy: 0.6358 - val_loss: 0.9024 - val_accuracy: 0.6773\n", + "Epoch 4/25\n", + "232/232 [==============================] - ETA: 0s - loss: 0.7844 - accuracy: 0.7259\n", + "Epoch 4: val_accuracy improved from 0.67726 to 0.72252, saving model to alex_2.h5\n", + "232/232 [==============================] - 267s 1s/step - loss: 0.7844 - accuracy: 0.7259 - val_loss: 0.7740 - val_accuracy: 0.7225\n", + "Epoch 5/25\n", + "232/232 [==============================] - ETA: 0s - loss: 0.5837 - accuracy: 0.7967\n", + "Epoch 5: val_accuracy improved from 0.72252 to 0.79472, saving model to alex_2.h5\n", + "232/232 [==============================] - 269s 1s/step - loss: 0.5837 - accuracy: 0.7967 - val_loss: 0.5986 - val_accuracy: 0.7947\n", + "Epoch 6/25\n", + "232/232 [==============================] - ETA: 0s - loss: 0.4601 - accuracy: 0.8393\n", + "Epoch 6: val_accuracy did not improve from 0.79472\n", + "232/232 [==============================] - 273s 1s/step - loss: 0.4601 - accuracy: 0.8393 - val_loss: 0.6495 - val_accuracy: 0.7769\n", + "Epoch 7/25\n", + "232/232 [==============================] - ETA: 0s - loss: 0.3825 - accuracy: 0.8679\n", + "Epoch 7: val_accuracy improved from 0.79472 to 0.85938, saving model to alex_2.h5\n", + "232/232 [==============================] - 274s 1s/step - loss: 0.3825 - accuracy: 0.8679 - val_loss: 0.4127 - val_accuracy: 0.8594\n", + "Epoch 8/25\n", + "232/232 [==============================] - ETA: 0s - loss: 0.2899 - accuracy: 0.8978\n", + "Epoch 8: val_accuracy did not improve from 0.85938\n", + "232/232 [==============================] - 273s 1s/step - loss: 0.2899 - accuracy: 0.8978 - val_loss: 0.4238 - val_accuracy: 0.8540\n", + "Epoch 9/25\n", + "232/232 [==============================] - ETA: 0s - loss: 0.2615 - accuracy: 0.9133\n", + "Epoch 9: val_accuracy improved from 0.85938 to 0.87338, saving model to alex_2.h5\n", + "232/232 [==============================] - 270s 1s/step - loss: 0.2615 - accuracy: 0.9133 - val_loss: 0.3714 - val_accuracy: 0.8734\n", + "Epoch 10/25\n", + "232/232 [==============================] - ETA: 0s - loss: 0.2115 - accuracy: 0.9247\n", + "Epoch 10: val_accuracy improved from 0.87338 to 0.87500, saving model to alex_2.h5\n", + "232/232 [==============================] - 269s 1s/step - loss: 0.2115 - accuracy: 0.9247 - val_loss: 0.3794 - val_accuracy: 0.8750\n", + "Epoch 11/25\n", + "232/232 [==============================] - ETA: 0s - loss: 0.1971 - accuracy: 0.9349\n", + "Epoch 11: val_accuracy did not improve from 0.87500\n", + "232/232 [==============================] - 270s 1s/step - loss: 0.1971 - accuracy: 0.9349 - val_loss: 0.4570 - val_accuracy: 0.8567\n", + "Epoch 12/25\n", + "232/232 [==============================] - ETA: 0s - loss: 0.1495 - accuracy: 0.9500\n", + "Epoch 12: val_accuracy improved from 0.87500 to 0.87662, saving model to alex_2.h5\n", + "232/232 [==============================] - 270s 1s/step - loss: 0.1495 - accuracy: 0.9500 - val_loss: 0.4067 - val_accuracy: 0.8766\n", + "Epoch 13/25\n", + "232/232 [==============================] - ETA: 0s - loss: 0.1206 - accuracy: 0.9634\n", + "Epoch 13: val_accuracy improved from 0.87662 to 0.88147, saving model to alex_2.h5\n", + "232/232 [==============================] - 269s 1s/step - loss: 0.1206 - accuracy: 0.9634 - val_loss: 0.4036 - val_accuracy: 0.8815\n", + "Epoch 14/25\n", + "232/232 [==============================] - ETA: 0s - loss: 0.1667 - accuracy: 0.9593\n", + "Epoch 14: val_accuracy did not improve from 0.88147\n", + "232/232 [==============================] - 272s 1s/step - loss: 0.1667 - accuracy: 0.9593 - val_loss: 0.5347 - val_accuracy: 0.8292\n", + "Epoch 15/25\n", + "232/232 [==============================] - ETA: 0s - loss: 0.1315 - accuracy: 0.9588\n", + "Epoch 15: val_accuracy did not improve from 0.88147\n", + "232/232 [==============================] - 277s 1s/step - loss: 0.1315 - accuracy: 0.9588 - val_loss: 0.7335 - val_accuracy: 0.8163\n", + "Epoch 16/25\n", + "232/232 [==============================] - ETA: 0s - loss: 0.0950 - accuracy: 0.9731\n", + "Epoch 16: val_accuracy improved from 0.88147 to 0.88308, saving model to alex_2.h5\n", + "232/232 [==============================] - 272s 1s/step - loss: 0.0950 - accuracy: 0.9731 - val_loss: 0.4444 - val_accuracy: 0.8831\n", + "Epoch 17/25\n", + "232/232 [==============================] - ETA: 0s - loss: 0.0566 - accuracy: 0.9846\n", + "Epoch 17: val_accuracy did not improve from 0.88308\n", + "232/232 [==============================] - 273s 1s/step - loss: 0.0566 - accuracy: 0.9846 - val_loss: 0.6635 - val_accuracy: 0.8287\n", + "Epoch 18/25\n", + "232/232 [==============================] - ETA: 0s - loss: 0.0443 - accuracy: 0.9880\n", + "Epoch 18: val_accuracy improved from 0.88308 to 0.88631, saving model to alex_2.h5\n", + "232/232 [==============================] - 273s 1s/step - loss: 0.0443 - accuracy: 0.9880 - val_loss: 0.4852 - val_accuracy: 0.8863\n", + "Epoch 19/25\n", + "232/232 [==============================] - ETA: 0s - loss: 0.0101 - accuracy: 0.9981\n", + "Epoch 19: val_accuracy improved from 0.88631 to 0.90248, saving model to alex_2.h5\n", + "232/232 [==============================] - 274s 1s/step - loss: 0.0101 - accuracy: 0.9981 - val_loss: 0.4459 - val_accuracy: 0.9025\n", + "Epoch 20/25\n", + "232/232 [==============================] - ETA: 0s - loss: 0.0031 - accuracy: 0.9995\n", + "Epoch 20: val_accuracy improved from 0.90248 to 0.90787, saving model to alex_2.h5\n", + "232/232 [==============================] - 274s 1s/step - loss: 0.0031 - accuracy: 0.9995 - val_loss: 0.4574 - val_accuracy: 0.9079\n", + "Epoch 21/25\n", + "232/232 [==============================] - ETA: 0s - loss: 0.0010 - accuracy: 1.0000\n", + "Epoch 21: val_accuracy did not improve from 0.90787\n", + "232/232 [==============================] - 278s 1s/step - loss: 0.0010 - accuracy: 1.0000 - val_loss: 0.4781 - val_accuracy: 0.9073\n", + "Epoch 22/25\n", + "232/232 [==============================] - ETA: 0s - loss: 7.0759e-04 - accuracy: 1.0000\n", + "Epoch 22: val_accuracy did not improve from 0.90787\n", + "232/232 [==============================] - 270s 1s/step - loss: 7.0759e-04 - accuracy: 1.0000 - val_loss: 0.4991 - val_accuracy: 0.9062\n", + "Epoch 23/25\n", + "232/232 [==============================] - ETA: 0s - loss: 5.5237e-04 - accuracy: 1.0000\n", + "Epoch 23: val_accuracy did not improve from 0.90787\n", + "232/232 [==============================] - 270s 1s/step - loss: 5.5237e-04 - accuracy: 1.0000 - val_loss: 0.5114 - val_accuracy: 0.9073\n", + "Epoch 24/25\n", + "232/232 [==============================] - ETA: 0s - loss: 4.5192e-04 - accuracy: 1.0000\n", + "Epoch 24: val_accuracy did not improve from 0.90787\n", + "232/232 [==============================] - 268s 1s/step - loss: 4.5192e-04 - accuracy: 1.0000 - val_loss: 0.5210 - val_accuracy: 0.9052\n", + "Epoch 25/25\n", + "232/232 [==============================] - ETA: 0s - loss: 3.7889e-04 - accuracy: 1.0000\n", + "Epoch 25: val_accuracy did not improve from 0.90787\n", + "232/232 [==============================] - 268s 1s/step - loss: 3.7889e-04 - accuracy: 1.0000 - val_loss: 0.5333 - val_accuracy: 0.9057\n" ] } ], @@ -318,7 +427,7 @@ " generator=train_ds_a, \n", " validation_data= val_ds_a, \n", " validation_steps=len(val_ds_a), \n", - " epochs=1, \n", + " epochs=25, \n", " callbacks=[checkpoint,early])" ] }, @@ -329,7 +438,7 @@ "outputs": [ { "data": { - "image/png": "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khSGGyIiIpIUhhsiIiKSFIYbIiIikhSGGyIiIpIUhhsiIiKSFIYbIiIikhSGGyIiIpIUhhsiIiKSFIYbIiIikhSGGyIiIpIUhhsiIiKSFIYbIiIikpR6EW6WLVsGV1dXGBkZoWPHjjh69GilfZOSkiCTyTQmIyOjOqyWiIiI6jOdh5t169YhJiYGsbGxOHnyJLy8vBAYGIibN29WuoyFhQWys7PV05UrV+qwYiIiIqrPdB5uFi1ahKioKERERKBNmzZYsWIFTExMkJCQUOkyMpkMDg4O6sne3r4OKyYiIqL6TKfhprS0FCdOnEBAQIC6TS6XIyAgAGlpaZUuV1RUhKZNm8LFxQV9+/bF77//XmnfkpISFBYWakxEREQkXToNN3l5eVAqleXOvNjb2yMnJ6fCZVq1aoWEhAT89NNP+OGHH6BSqdCpUydcu3atwv7z5s2DpaWlenJxcan1/SAiIqL6Q+eXpWrK398fYWFh8Pb2RpcuXbB582bY2dnhu+++q7D/1KlTUVBQoJ6uXr1axxUTERFRXdLX5cZtbW2hp6eH3Nxcjfbc3Fw4ODhUax0GBgZo3749Ll68WOF8hUIBhULxwrUSERFRw6DTMzeGhobw8fFBamqquk2lUiE1NRX+/v7VWodSqcTp06fh6OiorTKJiIioAdHpmRsAiImJQXh4OHx9feHn54e4uDgUFxcjIiICABAWFgZnZ2fMmzcPADBnzhy8/vrraNGiBfLz8zF//nxcuXIFo0eP1uVuEBERUT2h83ATEhKCW7duYebMmcjJyYG3tzd27typHmSclZUFufz/TjDdvXsXUVFRyMnJgbW1NXx8fHD48GG0adNGV7tARERE9YhMCCF0XURdKiwshKWlJQoKCmBhYaHrcoiIiKgaavL73eDuliIiIiKqCsMNERERSQrDDREREUkKww0RERFJCsMNERERSQrDDREREUkKww0RERFJCsMNERERSQrDDREREUkKww0RERFJCsMNERERSQrDDREREUkKww0RERFJCsMNERERSQrDDREREUkKww0RERFJCsMNERERSQrDDREREUkKww0RERFJCsMNERERSQrDDREREUkKww0RERFJCsMNERERSQrDDREREUkKww0RERFJCsMNERERSQrDDREREUkKww0RERFJCsMNERERSQrDDREREUkKww0RERFJCsMN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", + "image/png": "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K5VKhdrR0SqPotYeDho0CLVazeLFi1m0aBGjRo0yX2P37t306dOHYcOG0ahRI6pVq8bZs2cLfe26dety5coVIiMjzcf27duXp82ePXuoUqUK06dPp3nz5tSsWZPLly/naWNnZ4fBcOcV8OvWrcvx48dJS0szH9u9ezdqtZratWsXOuaiyP18V65cMR/777//SExMpF69euZjtWrV4oUXXmDDhg089thjLFiwwPxecHAwzzzzDL/99hsvvfQSP/zwQ4nEWtpJwmMFMjVdCFGRODs7M3jwYKZNm0ZkZCQjR440v1ezZk02btzInj17OHXqFE8//XSeGUh306VLF2rVqsWIESM4fvw4O3fuZPr06Xna1KxZk/DwcJYuXcqFCxf48ssvWbVqVZ42ISEhhIWFcezYMWJjY8nKyrrtXk888QT29vaMGDGCkydPsnXrViZOnMiTTz5prt+5VwaDgWPHjuV5nDp1ii5duhAaGsoTTzzBkSNHOHDgAMOHD6dDhw40b96cjIwMJkyYwLZt27h8+TK7d+/m4MGD1K1bF4DJkyezfv16wsLCOHLkCFu3bjW/V9FIwmMF1dxl8UEhRMUyevRoEhIS6NatW556m9dff52mTZvSrVs3OnbsiL+/P3379i30ddVqNatWrSIjI4OWLVsyZswY3nvvvTxtHn30UV544QUmTJhA48aN2bNnD2+88UaeNv3796d79+506tQJHx+ffKfGOzo6sn79euLj42nRogUDBgygc+fOzJkzp2jfjHykpqbSpEmTPI/evXujUqn4/fff8fDwoH379nTp0oVq1aqxbNkyADQaDXFxcQwfPpxatWoxaNAgevTowcyZMwFTIjV+/Hjq1q1L9+7dqVWrFt988819x1sWqRRFUawdhCUlJyfj5uZGUlISrq6uVokhMTORB5c9CMD+x/fjaGuZBbSEEGVXZmYmYWFhVK1aFXt7e2uHI0SJuNPP+f3+/pYeHitwt3fH094TgEvJl6wbjBBCCFEBSMJjJbKJqBBCCGE5kvBYidTxCCGEEJYjCY+V5G4xIT08QgghRMmThMdKcnt4JOERQhRFBZtnIiqYkvz5loTHSnLX4rmcfJlsY7aVoxFClHa5WxUU5wrEQpQ2uT/fN2/NUVxkawkrCXAKwF5jT6Yhk2up16jiWsXaIQkhSjEbGxscHR2JiYnB1tYWtVr+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", "text/plain": [ "
" ] @@ -360,13 +469,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "46/46 [==============================] - 24s 518ms/step - loss: 1.0025 - accuracy: 0.4137\n" + "72/72 [==============================] - 23s 318ms/step - loss: 0.4541 - accuracy: 0.9084\n" ] }, { "data": { "text/plain": [ - "[1.0024936199188232, 0.41372281312942505]" + "[0.45413827896118164, 0.9084201455116272]" ] }, "execution_count": 10, @@ -388,66 +497,66 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Model: \"sequential_1\"\n", + "Model: \"sequential\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", - " conv2d_5 (Conv2D) (None, 224, 224, 64) 1792 \n", + " conv2d (Conv2D) (None, 224, 224, 64) 1792 \n", " \n", - " conv2d_6 (Conv2D) (None, 224, 224, 64) 36928 \n", + " conv2d_1 (Conv2D) (None, 224, 224, 64) 36928 \n", " \n", - " max_pooling2d_3 (MaxPooling (None, 112, 112, 64) 0 \n", + " max_pooling2d (MaxPooling2D (None, 112, 112, 64) 0 \n", + " ) \n", + " \n", + " conv2d_2 (Conv2D) (None, 112, 112, 128) 73856 \n", + " \n", + " conv2d_3 (Conv2D) (None, 112, 112, 128) 147584 \n", + " \n", + " max_pooling2d_1 (MaxPooling (None, 56, 56, 128) 0 \n", " 2D) \n", " \n", - " conv2d_7 (Conv2D) (None, 112, 112, 128) 73856 \n", + " conv2d_4 (Conv2D) (None, 56, 56, 256) 295168 \n", " \n", - " conv2d_8 (Conv2D) (None, 112, 112, 128) 147584 \n", + " conv2d_5 (Conv2D) (None, 56, 56, 256) 590080 \n", " \n", - " max_pooling2d_4 (MaxPooling (None, 56, 56, 128) 0 \n", + " conv2d_6 (Conv2D) (None, 56, 56, 256) 590080 \n", + " \n", + " max_pooling2d_2 (MaxPooling (None, 28, 28, 256) 0 \n", " 2D) \n", " \n", - " conv2d_9 (Conv2D) (None, 56, 56, 256) 295168 \n", + " conv2d_7 (Conv2D) (None, 28, 28, 512) 1180160 \n", " \n", - " conv2d_10 (Conv2D) (None, 56, 56, 256) 590080 \n", + " conv2d_8 (Conv2D) (None, 28, 28, 512) 2359808 \n", " \n", - " conv2d_11 (Conv2D) (None, 56, 56, 256) 590080 \n", + " conv2d_9 (Conv2D) (None, 28, 28, 512) 2359808 \n", " \n", - " max_pooling2d_5 (MaxPooling (None, 28, 28, 256) 0 \n", + " max_pooling2d_3 (MaxPooling (None, 14, 14, 512) 0 \n", " 2D) \n", " \n", - " conv2d_12 (Conv2D) (None, 28, 28, 512) 1180160 \n", + " conv2d_10 (Conv2D) (None, 14, 14, 512) 2359808 \n", " \n", - " conv2d_13 (Conv2D) (None, 28, 28, 512) 2359808 \n", + " conv2d_11 (Conv2D) (None, 14, 14, 512) 2359808 \n", " \n", - " conv2d_14 (Conv2D) (None, 28, 28, 512) 2359808 \n", + " conv2d_12 (Conv2D) (None, 14, 14, 512) 2359808 \n", " \n", - " max_pooling2d_6 (MaxPooling (None, 14, 14, 512) 0 \n", - " 2D) \n", + " flatten (Flatten) (None, 100352) 0 \n", " \n", - " conv2d_15 (Conv2D) (None, 14, 14, 512) 2359808 \n", + " dense (Dense) (None, 4096) 411045888 \n", " \n", - " conv2d_16 (Conv2D) (None, 14, 14, 512) 2359808 \n", + " dense_1 (Dense) (None, 4096) 16781312 \n", " \n", - " conv2d_17 (Conv2D) (None, 14, 14, 512) 2359808 \n", - " \n", - " flatten_1 (Flatten) (None, 100352) 0 \n", - " \n", - " dense_3 (Dense) (None, 4096) 411045888 \n", - " \n", - " dense_4 (Dense) (None, 4096) 16781312 \n", - " \n", - " dense_5 (Dense) (None, 3) 12291 \n", + " dense_2 (Dense) (None, 12) 49164 \n", " \n", "=================================================================\n", - "Total params: 442,554,179\n", - "Trainable params: 442,554,179\n", + "Total params: 442,591,052\n", + "Trainable params: 442,591,052\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] @@ -456,7 +565,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/Users/jonas/Library/Python/3.9/lib/python/site-packages/keras/optimizers/optimizer_v2/adam.py:117: UserWarning: The `lr` argument is deprecated, use `learning_rate` instead.\n", + "/opt/homebrew/lib/python3.10/site-packages/keras/optimizers/optimizer_v2/adam.py:117: UserWarning: The `lr` argument is deprecated, use `learning_rate` instead.\n", " super().__init__(name, **kwargs)\n" ] } @@ -490,7 +599,7 @@ " keras.layers.Flatten(),\n", " keras.layers.Dense(units = 4096, activation='relu'),\n", " keras.layers.Dense(units = 4096, activation='relu'),\n", - " keras.layers.Dense(units = 3, activation='softmax')\n", + " keras.layers.Dense(units = 12, activation='softmax')\n", "])\n", "\n", "opt = Adam(lr=0.001)\n", @@ -501,16 +610,16 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Training: 4772\n", - "Test: 1492\n", - "Validation: 1194\n" + "Training: 7430\n", + "Test: 2323\n", + "Validation: 1858\n" ] } ], @@ -520,7 +629,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -534,18 +643,112 @@ "name": "stderr", "output_type": "stream", "text": [ - "WARNING:tensorflow:`period` argument is deprecated. Please use `save_freq` to specify the frequency in number of batches seen.\n", - "/var/folders/6b/j4d60ym516x2s6wymzj707rh0000gn/T/ipykernel_9542/385174540.py:5: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators.\n", - " vgg = model.fit_generator(steps_per_epoch=len(train_ds_v), generator=train_ds_v, validation_data= val_ds_v, validation_steps=len(val_ds_v), epochs=1, callbacks=[checkpoint,early])\n" + "/var/folders/_h/ljwht4gd7lb99rm1hm78h7_00000gn/T/ipykernel_24066/3966396738.py:5: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators.\n", + " vgg = model.fit_generator(steps_per_epoch=len(train_ds_v), generator=train_ds_v, validation_data= val_ds_v, validation_steps=len(val_ds_v), epochs=25, callbacks=[checkpoint,early])\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "149/149 [==============================] - ETA: 0s - loss: 0.8037 - accuracy: 0.7024 \n", - "Epoch 1: val_accuracy improved from -inf to 0.72804, saving model to vgg16_2.h5\n", - "149/149 [==============================] - 3159s 21s/step - loss: 0.8037 - accuracy: 0.7024 - val_loss: 0.7223 - val_accuracy: 0.7280\n" + "Epoch 1/25\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-01-06 22:32:18.362109: W tensorflow/tsl/platform/profile_utils/cpu_utils.cc:128] Failed to get CPU frequency: 0 Hz\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "232/232 [==============================] - ETA: 0s - loss: 2.4227 - accuracy: 0.1339 \n", + "Epoch 1: val_accuracy improved from -inf to 0.15086, saving model to vgg16_2.h5\n", + "232/232 [==============================] - 3659s 16s/step - loss: 2.4227 - accuracy: 0.1339 - val_loss: 2.4052 - val_accuracy: 0.1509\n", + "Epoch 2/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.4051 - accuracy: 0.1356 \n", + "Epoch 2: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3761s 16s/step - loss: 2.4051 - accuracy: 0.1356 - val_loss: 2.4036 - val_accuracy: 0.1509\n", + "Epoch 3/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.4026 - accuracy: 0.1381 \n", + "Epoch 3: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3712s 16s/step - loss: 2.4026 - accuracy: 0.1381 - val_loss: 2.4002 - val_accuracy: 0.1503\n", + "Epoch 4/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.4015 - accuracy: 0.1379 \n", + "Epoch 4: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3690s 16s/step - loss: 2.4015 - accuracy: 0.1379 - val_loss: 2.4012 - val_accuracy: 0.1509\n", + "Epoch 5/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.4015 - accuracy: 0.1382 \n", + "Epoch 5: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3695s 16s/step - loss: 2.4015 - accuracy: 0.1382 - val_loss: 2.3971 - val_accuracy: 0.1509\n", + "Epoch 6/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.4004 - accuracy: 0.1393 \n", + "Epoch 6: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3703s 16s/step - loss: 2.4004 - accuracy: 0.1393 - val_loss: 2.3999 - val_accuracy: 0.1509\n", + "Epoch 7/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.4006 - accuracy: 0.1379 \n", + "Epoch 7: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3678s 16s/step - loss: 2.4006 - accuracy: 0.1379 - val_loss: 2.3984 - val_accuracy: 0.1509\n", + "Epoch 8/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.4007 - accuracy: 0.1394 \n", + "Epoch 8: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3677s 16s/step - loss: 2.4007 - accuracy: 0.1394 - val_loss: 2.3993 - val_accuracy: 0.1509\n", + "Epoch 9/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.4006 - accuracy: 0.1354 \n", + "Epoch 9: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3660s 16s/step - loss: 2.4006 - accuracy: 0.1354 - val_loss: 2.3993 - val_accuracy: 0.1509\n", + "Epoch 10/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.4004 - accuracy: 0.1395 \n", + "Epoch 10: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3696s 16s/step - loss: 2.4004 - accuracy: 0.1395 - val_loss: 2.3970 - val_accuracy: 0.1509\n", + "Epoch 11/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.4005 - accuracy: 0.1394 \n", + "Epoch 11: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3672s 16s/step - loss: 2.4005 - accuracy: 0.1394 - val_loss: 2.4014 - val_accuracy: 0.1498\n", + "Epoch 12/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.4003 - accuracy: 0.1374 \n", + "Epoch 12: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3548s 15s/step - loss: 2.4003 - accuracy: 0.1374 - val_loss: 2.3988 - val_accuracy: 0.1503\n", + "Epoch 13/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.4005 - accuracy: 0.1393 \n", + "Epoch 13: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3600s 16s/step - loss: 2.4005 - accuracy: 0.1393 - val_loss: 2.3987 - val_accuracy: 0.1503\n", + "Epoch 14/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.4005 - accuracy: 0.1394 \n", + "Epoch 14: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3600s 16s/step - loss: 2.4005 - accuracy: 0.1394 - val_loss: 2.3989 - val_accuracy: 0.1509\n", + "Epoch 15/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.4004 - accuracy: 0.1393 \n", + "Epoch 15: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3261s 14s/step - loss: 2.4004 - accuracy: 0.1393 - val_loss: 2.3988 - val_accuracy: 0.1503\n", + "Epoch 16/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.3998 - accuracy: 0.1367 \n", + "Epoch 16: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3359s 14s/step - loss: 2.3998 - accuracy: 0.1367 - val_loss: 2.3984 - val_accuracy: 0.1509\n", + "Epoch 17/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.4001 - accuracy: 0.1395 \n", + "Epoch 17: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3397s 15s/step - loss: 2.4001 - accuracy: 0.1395 - val_loss: 2.4013 - val_accuracy: 0.1509\n", + "Epoch 18/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.3998 - accuracy: 0.1394 \n", + "Epoch 18: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3391s 15s/step - loss: 2.3998 - accuracy: 0.1394 - val_loss: 2.3987 - val_accuracy: 0.1509\n", + "Epoch 19/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.3991 - accuracy: 0.1395 \n", + "Epoch 19: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3483s 15s/step - loss: 2.3991 - accuracy: 0.1395 - val_loss: 2.4005 - val_accuracy: 0.1509\n", + "Epoch 20/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.4009 - accuracy: 0.1373 \n", + "Epoch 20: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3464s 15s/step - loss: 2.4009 - accuracy: 0.1373 - val_loss: 2.3981 - val_accuracy: 0.1503\n", + "Epoch 21/25\n", + "232/232 [==============================] - ETA: 0s - loss: 2.3996 - accuracy: 0.1394 \n", + "Epoch 21: val_accuracy did not improve from 0.15086\n", + "232/232 [==============================] - 3464s 15s/step - loss: 2.3996 - accuracy: 0.1394 - val_loss: 2.3978 - val_accuracy: 0.1509\n", + "Epoch 21: early stopping\n" ] } ], @@ -554,23 +757,24 @@ "\n", "checkpoint = ModelCheckpoint(\"vgg16_2.h5\", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)\n", "early = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')\n", - "vgg = model.fit_generator(steps_per_epoch=len(train_ds_v), generator=train_ds_v, validation_data= val_ds_v, validation_steps=len(val_ds_v), epochs=1, callbacks=[checkpoint,early])" + "vgg = model.fit_generator(steps_per_epoch=len(train_ds_v), generator=train_ds_v, validation_data= val_ds_v, validation_steps=len(val_ds_v), epochs=25, callbacks=[checkpoint,early])" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "metadata": {}, "outputs": [ { - "data": { - "image/png": "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h5/bxoABA2BsbIx169Zh7969mDBhQpX2/SoYgIiISOtMTEzg7++PefPmISsrC+PGjZPXtW7dGvHx8Thx4gTS0tLw3nvvlXvnY2W8vb3Rpk0bBAcH49y5czh69Cjmz5+vUad169bIzMxEbGwsrl69itWrV2Pnzp0adVxcXJCRkYGUlBTk5eWhuLi43L7GjBkDAwMDBAcHIzU1FQcPHkRYWBjGjh370g/kvX37Nn744QcEBwfjjTfe0FiCgoKwa9cu3L17F1OnTkVBQQFGjRqFM2fO4PLly/jXv/4lX3pbvHgxvvzyS6xevRqXL19GcnIyvv76awBPztK8+eabWLZsGdLS0nD48GGNOVGVad26NXbs2IGUlBScO3cOo0eP1jib5eLiguDgYEyYMAG7du1CRkYGDh06hK1bt8p1dHR0MG7cOMybNw+tW7euk9dXMQAREVG9EBISgj/++AM+Pj4a83UWLFiAv/zlL/Dx8UHv3r1hb29fracuq1Qq7Ny5Ew8fPoSnpydCQ0M13iAAAIMHD8aMGTMwdepUuLu748SJE1i4cKFGnWHDhqFfv37o06cPbG1tK7wV38jICPv27cPdu3fRtWtXDB8+HH379sWaNWuqdzD+5OmE6orm7/Tt2xeGhob497//DWtra/z8888oLCxEr1690KVLF3z//ffy5bbg4GBERkbim2++QceOHTFo0CBcvnxZbmv9+vV4/PgxunTpgunTp+OTTz6pUv9WrlwJS0tLdO/eHb6+vvDx8cFf/vIXjTrr1q3D8OHD8f7776Ndu3aYOHGixlky4Mk//5KSkjp7dRWfBF0BPgmaiBqahvokaKKnjh49ir59++L69euVni2rqSdBcxI0ERERaU1xcTFu376NxYsXY8SIEXX27k5eAiMiIiKt2bx5M5ydnXHv3j188cUXdbZfBiAiIiLSmnHjxqGsrAxnz55Fs2bN6my/DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOAxARESkVePGjavWu72IagIDEBERESkOAxAREdVbhw8fhqenJ/T19eHg4IC5c+fi8ePH8vpt27bB1dUVhoaGsLa2hre3t/yW8UOHDsHT0xPGxsawsLBAjx49cO3aNW0NheoZvgyViKiREkLg4eOHWtm3oa4hJEl6pTZu3ryJAQMG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9pVuW1RUhNjYWISEhJRrU1dXFx06dNAob9++faV3genr68PMzExjISIiosZLawFIT08PXbp0QUJCglymVquRkJCAbt26VbptXFwciouLERgYWK7Nrl27Ij09XaP8119/hbOzc811noiIiBo0XW3uPDw8HMHBwfDw8ICnpyciIyNRVFSE8ePHAwCCgoLQrFkzLF26VGO7qKgo+Pn5wdraulybs2fPhr+/P3r27Ik+ffpg7969+OGHH3Do0KG6GBIRERE1AFoNQP7+/rh9+zYWLVqE7OxsuLu7Y+/evfLE6MzMTKhUmiep0tPTcezYMezfv7/CNocOHYpvv/0WS5cuxbRp09C2bVts374db731Vq2Ph4iIiBqGl3oO0OPHj3Ho0CFcvXoVo0ePhqmpKW7dugUzMzOYmJjURj/rFJ8DRERE1PBU5/e72meArl27hn79+iEzMxPFxcX461//ClNTU3z++ecoLi6u9G4rIiIiovqg2pOgP/jgA3h4eOCPP/6AoaGhXD506FCNCc1ERERE9VW1zwAdPXoUJ06cgJ6enka5i4sLbt68WWMdIyIiIqot1T4DpFarUVZWVq78xo0bMDU1rZFOEREREdWmagegv/3tb4iMjJQ/S5KEwsJCREREYMCAATXZNyIiIqJaUe27wG7cuAEfHx8IIXD58mV4eHjg8uXLsLGxwZEjR9C0adPa6mud4V1gREREDU91fr9f+jb42NhYnD9/HoWFhfjLX/6CMWPGaEyKbsgYgIiIiBqeWr0NHgB0dXXLvYaCiIiIqKGodgDasGFDpeuDgoJeujNEREREdaHal8AsLS01PpeWluLBgwfQ09ODkZER7t69W6Md1AZeAiMiImp4qvP7Xe27wP744w+NpbCwEOnp6XjrrbewefPml+40ERERUV2pdgCqSOvWrbFs2TJ88MEHNdEcERERUa2qkQAEPJkYfevWrZpqjoiIiKjWVHsS9O7duzU+CyGQlZWFNWvWoEePHjXWMSIiIqLaUu0A5Ofnp/FZkiTY2trinXfewZdffllT/SIiIiKqNdUOQGq1ujb6QURERFRnamwOEBEREVFDUaUzQOHh4VVucOXKlS/dGSIiIqK6UKUA9H//939VakySpFfqDBEREVFdqFIAOnjwYG33g4iIiKjOcA4QERERKc5LvQ3+zJkz2Lp1KzIzM1FSUqKxbseOHTXSMSIiIqLaUu0zQLGxsejevTvS0tKwc+dOlJaW4pdffsHPP/8Mc3Pz2ugjERERUY2qdgD67LPP8NVXX+GHH36Anp4eVq1ahUuXLmHkyJFo3rx5bfSRiIiIqEZVOwBdvXoVAwcOBADo6emhqKgIkiRhxowZ+O6772q8g0REREQ1rdoByNLSEvfv3wcANGvWDKmpqQCAe/fu4cGDBzXbOyIiIqJaUOUA9DTo9OzZE/Hx8QCAESNG4IMPPsDEiRMREBCAvn371k4viYiIiGpQle8C69SpE7p27Qo/Pz+MGDECADB//nw0adIEJ06cwLBhw7BgwYJa6ygRERFRTZGEEKIqFY8ePYro6Ghs27YNarUaw4YNQ2hoKN5+++3a7mOdKygogLm5OfLz82FmZqbt7hAREVEVVOf3u8qXwN5++22sX78eWVlZ+Prrr/H777+jV69eaNOmDT7//HNkZ2e/cseJiIiI6kK1J0EbGxtj/PjxOHz4MH799VeMGDECa9euRfPmzTF48ODa6CMRERFRjaryJbDnKSoqwsaNGzFv3jzcu3cPZWVlNdU3reElMCIiooanOr/fL/UqDAA4cuQI1q9fj+3bt0OlUmHkyJEICQl52eaIiIiI6ky1AtCtW7cQExODmJgYXLlyBd27d8fq1asxcuRIGBsb11YfiYiIiGpUlQNQ//79ceDAAdjY2CAoKAgTJkxA27Zta7NvRERERLWiygGoSZMm2LZtGwYNGgQdHZ3a7BMRERFRrapyANq9e3dt9oOIiIiozlT7NngiIiKiho4BiIiIiBSHAYiIiIgUhwGIiIiIFIcBiIiIiBSHAYiIiIgUhwGIiIiIFIcBiIiIiBSHAYiIiIgUhwGIiIiIFIcBiIiIiBSHAYiIiIgUhwGIiIiIFIcBiIiIiBSHAYiIiIgUhwGIiIiIFIcBiIiIiBSHAYiIiIgUp14EoLVr18LFxQUGBgbw8vJCUlLSc+v27t0bkiSVWwYOHFhh/cmTJ0OSJERGRtZS74mIiKih0XoA2rJlC8LDwxEREYHk5GS4ubnBx8cHubm5FdbfsWMHsrKy5CU1NRU6OjoYMWJEubo7d+7EyZMn4ejoWNvDICIiogZE6wFo5cqVmDhxIsaPH48OHTrg22+/hZGREdavX19hfSsrK9jb28tLfHw8jIyMygWgmzdvIiwsDBs3bkSTJk3qYihERETUQGg1AJWUlODs2bPw9vaWy1QqFby9vZGYmFilNqKiojBq1CgYGxvLZWq1GmPHjsXs2bPRsWPHF7ZRXFyMgoICjYWIiIgaL60GoLy8PJSVlcHOzk6j3M7ODtnZ2S/cPikpCampqQgNDdUo//zzz6Grq4tp06ZVqR9Lly6Fubm5vDg5OVV9EERERNTgaP0S2KuIioqCq6srPD095bKzZ89i1apViImJgSRJVWpn3rx5yM/Pl5fr16/XVpeJiIioHtBqALKxsYGOjg5ycnI0ynNycmBvb1/ptkVFRYiNjUVISIhG+dGjR5Gbm4vmzZtDV1cXurq6uHbtGmbOnAkXF5cK29LX14eZmZnGQkRERI2XVgOQnp4eunTpgoSEBLlMrVYjISEB3bp1q3TbuLg4FBcXIzAwUKN87NixOH/+PFJSUuTF0dERs2fPxr59+2plHERERNSw6Gq7A+Hh4QgODoaHhwc8PT0RGRmJoqIijB8/HgAQFBSEZs2aYenSpRrbRUVFwc/PD9bW1hrl1tbW5cqaNGkCe3t7tG3btnYHQ0RERA2C1gOQv78/bt++jUWLFiE7Oxvu7u7Yu3evPDE6MzMTKpXmiar09HQcO3YM+/fv10aXiYiIqIGThBBC252obwoKCmBubo78/HzOByIiImogqvP73aDvAiMiIiJ6GQxAREREpDgMQERERKQ4DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOAxAREREpDgMQERERKQ4DEBERESkOPUiAK1duxYuLi4wMDCAl5cXkpKSnlu3d+/ekCSp3DJw4EAAQGlpKebMmQNXV1cYGxvD0dERQUFBuHXrVl0Nh4iIiOo5rQegLVu2IDw8HBEREUhOToabmxt8fHyQm5tbYf0dO3YgKytLXlJTU6Gjo4MRI0YAAB48eIDk5GQsXLgQycnJ2LFjB9LT0zF48OC6HBYRERHVY5IQQmizA15eXujatSvWrFkDAFCr1XByckJYWBjmzp37wu0jIyOxaNEiZGVlwdjYuMI6p0+fhqenJ65du4bmzZu/sM2CggKYm5sjPz8fZmZm1RsQERERaUV1fr+1egaopKQEZ8+ehbe3t1ymUqng7e2NxMTEKrURFRWFUaNGPTf8AEB+fj4kSYKFhcWrdpmIiIgaAV1t7jwvLw9lZWWws7PTKLezs8OlS5deuH1SUhJSU1MRFRX13DqPHj3CnDlzEBAQ8Nw0WFxcjOLiYvlzQUFBFUdAREREDZHW5wC9iqioKLi6usLT07PC9aWlpRg5ciSEEFi3bt1z21m6dCnMzc3lxcnJqba6TERERPWAVgOQjY0NdHR0kJOTo1Gek5MDe3v7SrctKipCbGwsQkJCKlz/NPxcu3YN8fHxlV4LnDdvHvLz8+Xl+vXr1R8MERERNRhaDUB6enro0qULEhIS5DK1Wo2EhAR069at0m3j4uJQXFyMwMDAcuuehp/Lly/jwIEDsLa2rrQtfX19mJmZaSxERETUeGl1DhAAhIeHIzg4GB4eHvD09ERkZCSKioowfvx4AEBQUBCaNWuGpUuXamwXFRUFPz+/cuGmtLQUw4cPR3JyMv773/+irKwM2dnZAAArKyvo6enVzcCIiIio3tJ6APL398ft27exaNEiZGdnw93dHXv37pUnRmdmZkKl0jxRlZ6ejmPHjmH//v3l2rt58yZ2794NAHB3d9dYd/DgQfTu3btWxkFEREQNh9afA1Qf8TlAREREDU+DeQ4QERERkTYwABEREZHiMAARERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABEREZHiMAARERGR4jAAERERkeIwABEREZHi1IsAtHbtWri4uMDAwABeXl5ISkp6bt3evXtDkqRyy8CBA+U6QggsWrQIDg4OMDQ0hLe3Ny5fvlwXQyEiIqIGQOsBaMuWLQgPD0dERASSk5Ph5uYGHx8f5ObmVlh/x44dyMrKkpfU1FTo6OhgxIgRcp0vvvgCq1evxrfffotTp07B2NgYPj4+ePToUV0Ni4iIiOoxSQghtNkBLy8vdO3aFWvWrAEAqNVqODk5ISwsDHPnzn3h9pGRkVi0aBGysrJgbGwMIQQcHR0xc+ZMzJo1CwCQn58POzs7xMTEYNSoUS9ss6CgAObm5sjPz4eZmdmrDZCIiIjqRHV+v7V6BqikpARnz56Ft7e3XKZSqeDt7Y3ExMQqtREVFYVRo0bB2NgYAJCRkYHs7GyNNs3NzeHl5fXcNouLi1FQUKCxEBERUeOl1QCUl5eHsrIy2NnZaZTb2dkhOzv7hdsnJSUhNTUVoaGhctnT7arT5tKlS2Fubi4vTk5O1R0KERERNSBanwP0KqKiouDq6gpPT89XamfevHnIz8+Xl+vXr9dQD4mIiKg+0moAsrGxgY6ODnJycjTKc3JyYG9vX+m2RUVFiI2NRUhIiEb50+2q06a+vj7MzMw0FiIiImq8tBqA9PT00KVLFyQkJMhlarUaCQkJ6NatW6XbxsXFobi4GIGBgRrlLVq0gL29vUabBQUFOHXq1AvbJCIiImXQ1XYHwsPDERwcDA8PD3h6eiIyMhJFRUUYP348ACAoKAjNmjXD0qVLNbaLioqCn58frK2tNcolScL06dPxySefoHXr1mjRogUWLlwIR0dH+Pn51dWwiIiIqB7TegDy9/fH7du3sWjRImRnZ8Pd3R179+6VJzFnZmZCpdI8UZWeno5jx45h//79Fbb54Ycfoqio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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" + "ename": "NameError", + "evalue": "name 'vgg' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn [11], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mmatplotlib\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mpyplot\u001b[39;00m \u001b[39mas\u001b[39;00m \u001b[39mplt\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m plt\u001b[39m.\u001b[39mplot(vgg\u001b[39m.\u001b[39mhistory[\u001b[39m\"\u001b[39m\u001b[39maccuracy\u001b[39m\u001b[39m\"\u001b[39m])\n\u001b[1;32m 3\u001b[0m plt\u001b[39m.\u001b[39mplot(vgg\u001b[39m.\u001b[39mhistory[\u001b[39m'\u001b[39m\u001b[39mval_accuracy\u001b[39m\u001b[39m'\u001b[39m])\n\u001b[1;32m 4\u001b[0m plt\u001b[39m.\u001b[39mplot(vgg\u001b[39m.\u001b[39mhistory[\u001b[39m'\u001b[39m\u001b[39mloss\u001b[39m\u001b[39m'\u001b[39m])\n", + "\u001b[0;31mNameError\u001b[0m: name 'vgg' is not defined" + ] } ], "source": [ @@ -588,25 +792,19 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 5, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "46/46 [==============================] - 238s 5s/step - loss: 0.7124 - accuracy: 0.7364\n" + "ename": "NameError", + "evalue": "name 'model' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn [5], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m model\u001b[39m.\u001b[39mevaluate(test_ds_v)\n", + "\u001b[0;31mNameError\u001b[0m: name 'model' is not defined" ] - }, - { - "data": { - "text/plain": [ - "[0.7124184966087341, 0.7364130616188049]" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ @@ -623,7 +821,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -1102,9 +1300,9 @@ " \n", " conv5_block3_out (Activation) (None, 7, 7, 2048) 0 ['conv5_block3_add[0][0]'] \n", " \n", - " flatten_2 (Flatten) (None, 100352) 0 ['conv5_block3_out[0][0]'] \n", + " flatten (Flatten) (None, 100352) 0 ['conv5_block3_out[0][0]'] \n", " \n", - " dense_6 (Dense) (None, 5) 501765 ['flatten_2[0][0]'] \n", + " dense (Dense) (None, 5) 501765 ['flatten[0][0]'] \n", " \n", "==================================================================================================\n", "Total params: 24,089,477\n", @@ -1136,7 +1334,7 @@ " layer.trainable = False\n", " \n", " # useful for getting number of classes\n", - "classes = 5\n", + "classes = 12\n", " \n", "\n", "# our layers - you can add more if you want\n", @@ -1160,18 +1358,16 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 6, "metadata": {}, "outputs": [ { - "ename": "NameError", - "evalue": "name 'prepare_data' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[1], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m train_ds_r, test_ds_r, val_ds_r \u001b[39m=\u001b[39m prepare_data(\u001b[39m'\u001b[39m\u001b[39m./plantvillage/color\u001b[39m\u001b[39m'\u001b[39m, img_size\u001b[39m=\u001b[39mIMAGE_SIZE, test_size\u001b[39m=\u001b[39m\u001b[39m0.2\u001b[39m, val_size\u001b[39m=\u001b[39m\u001b[39m0.2\u001b[39m)\n", - "\u001b[0;31mNameError\u001b[0m: name 'prepare_data' is not defined" + "name": "stdout", + "output_type": "stream", + "text": [ + "Training: 7430\n", + "Test: 2323\n", + "Validation: 1858\n" ] } ], @@ -1181,14 +1377,52 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/_h/ljwht4gd7lb99rm1hm78h7_00000gn/T/ipykernel_38631/4078056843.py:1: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators.\n", + " r = model.fit_generator(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/25\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-01-07 20:27:50.806255: W tensorflow/tsl/platform/profile_utils/cpu_utils.cc:128] Failed to get CPU frequency: 0 Hz\n", + "2023-01-07 20:27:53.343322: W tensorflow/core/framework/op_kernel.cc:1830] OP_REQUIRES failed at sparse_xent_op.cc:103 : INVALID_ARGUMENT: Received a label value of 11 which is outside the valid range of [0, 5). Label values: 5 8 9 11 4 7 4 11 1 11 5 3 4 3 9 4 3 5 7 9 3 3 5 1 2 1 6 3 3 5 0 9\n" + ] + }, + { + "ename": "InvalidArgumentError", + "evalue": "Graph execution error:\n\nDetected at node 'sparse_categorical_crossentropy/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits' defined at (most recent call last):\n File \"/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/runpy.py\", line 196, in _run_module_as_main\n return _run_code(code, main_globals, None,\n File \"/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/runpy.py\", line 86, in _run_code\n exec(code, run_globals)\n File \"/opt/homebrew/lib/python3.10/site-packages/ipykernel_launcher.py\", line 17, in \n app.launch_new_instance()\n File \"/opt/homebrew/lib/python3.10/site-packages/traitlets/config/application.py\", line 982, in launch_instance\n app.start()\n File \"/opt/homebrew/lib/python3.10/site-packages/ipykernel/kernelapp.py\", line 712, in start\n self.io_loop.start()\n File \"/opt/homebrew/lib/python3.10/site-packages/tornado/platform/asyncio.py\", line 215, in start\n self.asyncio_loop.run_forever()\n File \"/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/base_events.py\", line 603, in run_forever\n self._run_once()\n File \"/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/base_events.py\", line 1906, in _run_once\n handle._run()\n File \"/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/events.py\", line 80, in _run\n self._context.run(self._callback, *self._args)\n File \"/opt/homebrew/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 510, in dispatch_queue\n await self.process_one()\n File \"/opt/homebrew/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 499, in process_one\n await dispatch(*args)\n File \"/opt/homebrew/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 406, in dispatch_shell\n await result\n File \"/opt/homebrew/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 730, in execute_request\n reply_content = await reply_content\n File \"/opt/homebrew/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 383, in do_execute\n res = shell.run_cell(\n File \"/opt/homebrew/lib/python3.10/site-packages/ipykernel/zmqshell.py\", line 528, in run_cell\n return super().run_cell(*args, **kwargs)\n File \"/opt/homebrew/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 2885, in run_cell\n result = self._run_cell(\n File \"/opt/homebrew/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 2940, in _run_cell\n return runner(coro)\n File \"/opt/homebrew/lib/python3.10/site-packages/IPython/core/async_helpers.py\", line 129, in _pseudo_sync_runner\n coro.send(None)\n File \"/opt/homebrew/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3139, in run_cell_async\n has_raised = await self.run_ast_nodes(code_ast.body, cell_name,\n File \"/opt/homebrew/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3318, in run_ast_nodes\n if await self.run_code(code, result, async_=asy):\n File \"/opt/homebrew/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3378, in run_code\n exec(code_obj, self.user_global_ns, self.user_ns)\n File \"/var/folders/_h/ljwht4gd7lb99rm1hm78h7_00000gn/T/ipykernel_38631/4078056843.py\", line 1, in \n r = model.fit_generator(\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/engine/training.py\", line 2604, in fit_generator\n return self.fit(\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/utils/traceback_utils.py\", line 65, in error_handler\n return fn(*args, **kwargs)\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/engine/training.py\", line 1650, in fit\n tmp_logs = self.train_function(iterator)\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/engine/training.py\", line 1249, in train_function\n return step_function(self, iterator)\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/engine/training.py\", line 1233, in step_function\n outputs = model.distribute_strategy.run(run_step, args=(data,))\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/engine/training.py\", line 1222, in run_step\n outputs = model.train_step(data)\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/engine/training.py\", line 1024, in train_step\n loss = self.compute_loss(x, y, y_pred, sample_weight)\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/engine/training.py\", line 1082, in compute_loss\n return self.compiled_loss(\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/engine/compile_utils.py\", line 265, in __call__\n loss_value = loss_obj(y_t, y_p, sample_weight=sw)\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/losses.py\", line 152, in __call__\n losses = call_fn(y_true, y_pred)\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/losses.py\", line 284, in call\n return ag_fn(y_true, y_pred, **self._fn_kwargs)\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/losses.py\", line 2098, in sparse_categorical_crossentropy\n return backend.sparse_categorical_crossentropy(\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/backend.py\", line 5633, in sparse_categorical_crossentropy\n res = tf.nn.sparse_softmax_cross_entropy_with_logits(\nNode: 'sparse_categorical_crossentropy/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits'\nReceived a label value of 11 which is outside the valid range of [0, 5). Label values: 5 8 9 11 4 7 4 11 1 11 5 3 4 3 9 4 3 5 7 9 3 3 5 1 2 1 6 3 3 5 0 9\n\t [[{{node sparse_categorical_crossentropy/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits}}]] [Op:__inference_train_function_8562]", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mInvalidArgumentError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn [7], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m r \u001b[39m=\u001b[39m model\u001b[39m.\u001b[39;49mfit_generator(\n\u001b[1;32m 2\u001b[0m train_ds_r,\n\u001b[1;32m 3\u001b[0m validation_data\u001b[39m=\u001b[39;49mval_ds_r,\n\u001b[1;32m 4\u001b[0m epochs\u001b[39m=\u001b[39;49m\u001b[39m25\u001b[39;49m,\n\u001b[1;32m 5\u001b[0m steps_per_epoch\u001b[39m=\u001b[39;49m\u001b[39mlen\u001b[39;49m(train_ds_r),\n\u001b[1;32m 6\u001b[0m validation_steps\u001b[39m=\u001b[39;49m\u001b[39mlen\u001b[39;49m(val_ds_r)\n\u001b[1;32m 7\u001b[0m )\n", + "File \u001b[0;32m/opt/homebrew/lib/python3.10/site-packages/keras/engine/training.py:2604\u001b[0m, in \u001b[0;36mModel.fit_generator\u001b[0;34m(self, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, validation_freq, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)\u001b[0m\n\u001b[1;32m 2592\u001b[0m \u001b[39m\"\"\"Fits the model on data yielded batch-by-batch by a Python generator.\u001b[39;00m\n\u001b[1;32m 2593\u001b[0m \n\u001b[1;32m 2594\u001b[0m \u001b[39mDEPRECATED:\u001b[39;00m\n\u001b[1;32m 2595\u001b[0m \u001b[39m `Model.fit` now supports generators, so there is no longer any need to\u001b[39;00m\n\u001b[1;32m 2596\u001b[0m \u001b[39m use this endpoint.\u001b[39;00m\n\u001b[1;32m 2597\u001b[0m \u001b[39m\"\"\"\u001b[39;00m\n\u001b[1;32m 2598\u001b[0m warnings\u001b[39m.\u001b[39mwarn(\n\u001b[1;32m 2599\u001b[0m \u001b[39m\"\u001b[39m\u001b[39m`Model.fit_generator` is deprecated and \u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 2600\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mwill be removed in a future version. \u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 2601\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mPlease use `Model.fit`, which supports generators.\u001b[39m\u001b[39m\"\u001b[39m,\n\u001b[1;32m 2602\u001b[0m stacklevel\u001b[39m=\u001b[39m\u001b[39m2\u001b[39m,\n\u001b[1;32m 2603\u001b[0m )\n\u001b[0;32m-> 2604\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mfit(\n\u001b[1;32m 2605\u001b[0m generator,\n\u001b[1;32m 2606\u001b[0m steps_per_epoch\u001b[39m=\u001b[39;49msteps_per_epoch,\n\u001b[1;32m 2607\u001b[0m epochs\u001b[39m=\u001b[39;49mepochs,\n\u001b[1;32m 2608\u001b[0m verbose\u001b[39m=\u001b[39;49mverbose,\n\u001b[1;32m 2609\u001b[0m callbacks\u001b[39m=\u001b[39;49mcallbacks,\n\u001b[1;32m 2610\u001b[0m validation_data\u001b[39m=\u001b[39;49mvalidation_data,\n\u001b[1;32m 2611\u001b[0m validation_steps\u001b[39m=\u001b[39;49mvalidation_steps,\n\u001b[1;32m 2612\u001b[0m validation_freq\u001b[39m=\u001b[39;49mvalidation_freq,\n\u001b[1;32m 2613\u001b[0m class_weight\u001b[39m=\u001b[39;49mclass_weight,\n\u001b[1;32m 2614\u001b[0m max_queue_size\u001b[39m=\u001b[39;49mmax_queue_size,\n\u001b[1;32m 2615\u001b[0m workers\u001b[39m=\u001b[39;49mworkers,\n\u001b[1;32m 2616\u001b[0m use_multiprocessing\u001b[39m=\u001b[39;49muse_multiprocessing,\n\u001b[1;32m 2617\u001b[0m shuffle\u001b[39m=\u001b[39;49mshuffle,\n\u001b[1;32m 2618\u001b[0m initial_epoch\u001b[39m=\u001b[39;49minitial_epoch,\n\u001b[1;32m 2619\u001b[0m )\n", + "File \u001b[0;32m/opt/homebrew/lib/python3.10/site-packages/keras/utils/traceback_utils.py:70\u001b[0m, in \u001b[0;36mfilter_traceback..error_handler\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 67\u001b[0m filtered_tb \u001b[39m=\u001b[39m _process_traceback_frames(e\u001b[39m.\u001b[39m__traceback__)\n\u001b[1;32m 68\u001b[0m \u001b[39m# To get the full stack trace, call:\u001b[39;00m\n\u001b[1;32m 69\u001b[0m \u001b[39m# `tf.debugging.disable_traceback_filtering()`\u001b[39;00m\n\u001b[0;32m---> 70\u001b[0m \u001b[39mraise\u001b[39;00m e\u001b[39m.\u001b[39mwith_traceback(filtered_tb) \u001b[39mfrom\u001b[39;00m \u001b[39mNone\u001b[39m\n\u001b[1;32m 71\u001b[0m \u001b[39mfinally\u001b[39;00m:\n\u001b[1;32m 72\u001b[0m \u001b[39mdel\u001b[39;00m filtered_tb\n", + "File \u001b[0;32m/opt/homebrew/lib/python3.10/site-packages/tensorflow/python/eager/execute.py:52\u001b[0m, in \u001b[0;36mquick_execute\u001b[0;34m(op_name, num_outputs, inputs, attrs, ctx, name)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m 51\u001b[0m ctx\u001b[39m.\u001b[39mensure_initialized()\n\u001b[0;32m---> 52\u001b[0m tensors \u001b[39m=\u001b[39m pywrap_tfe\u001b[39m.\u001b[39mTFE_Py_Execute(ctx\u001b[39m.\u001b[39m_handle, device_name, op_name,\n\u001b[1;32m 53\u001b[0m inputs, attrs, num_outputs)\n\u001b[1;32m 54\u001b[0m \u001b[39mexcept\u001b[39;00m core\u001b[39m.\u001b[39m_NotOkStatusException \u001b[39mas\u001b[39;00m e:\n\u001b[1;32m 55\u001b[0m \u001b[39mif\u001b[39;00m name \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n", + "\u001b[0;31mInvalidArgumentError\u001b[0m: Graph execution error:\n\nDetected at node 'sparse_categorical_crossentropy/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits' defined at (most recent call last):\n File \"/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/runpy.py\", line 196, in _run_module_as_main\n return _run_code(code, main_globals, None,\n File \"/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/runpy.py\", line 86, in _run_code\n exec(code, run_globals)\n File \"/opt/homebrew/lib/python3.10/site-packages/ipykernel_launcher.py\", line 17, in \n app.launch_new_instance()\n File \"/opt/homebrew/lib/python3.10/site-packages/traitlets/config/application.py\", line 982, in launch_instance\n app.start()\n File \"/opt/homebrew/lib/python3.10/site-packages/ipykernel/kernelapp.py\", line 712, in start\n self.io_loop.start()\n File \"/opt/homebrew/lib/python3.10/site-packages/tornado/platform/asyncio.py\", line 215, in start\n self.asyncio_loop.run_forever()\n File \"/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/base_events.py\", line 603, in run_forever\n self._run_once()\n File \"/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/base_events.py\", line 1906, in _run_once\n handle._run()\n File \"/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/events.py\", line 80, in _run\n self._context.run(self._callback, *self._args)\n File \"/opt/homebrew/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 510, in dispatch_queue\n await self.process_one()\n File \"/opt/homebrew/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 499, in process_one\n await dispatch(*args)\n File \"/opt/homebrew/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 406, in dispatch_shell\n await result\n File \"/opt/homebrew/lib/python3.10/site-packages/ipykernel/kernelbase.py\", line 730, in execute_request\n reply_content = await reply_content\n File \"/opt/homebrew/lib/python3.10/site-packages/ipykernel/ipkernel.py\", line 383, in do_execute\n res = shell.run_cell(\n File \"/opt/homebrew/lib/python3.10/site-packages/ipykernel/zmqshell.py\", line 528, in run_cell\n return super().run_cell(*args, **kwargs)\n File \"/opt/homebrew/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 2885, in run_cell\n result = self._run_cell(\n File \"/opt/homebrew/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 2940, in _run_cell\n return runner(coro)\n File \"/opt/homebrew/lib/python3.10/site-packages/IPython/core/async_helpers.py\", line 129, in _pseudo_sync_runner\n coro.send(None)\n File \"/opt/homebrew/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3139, in run_cell_async\n has_raised = await self.run_ast_nodes(code_ast.body, cell_name,\n File \"/opt/homebrew/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3318, in run_ast_nodes\n if await self.run_code(code, result, async_=asy):\n File \"/opt/homebrew/lib/python3.10/site-packages/IPython/core/interactiveshell.py\", line 3378, in run_code\n exec(code_obj, self.user_global_ns, self.user_ns)\n File \"/var/folders/_h/ljwht4gd7lb99rm1hm78h7_00000gn/T/ipykernel_38631/4078056843.py\", line 1, in \n r = model.fit_generator(\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/engine/training.py\", line 2604, in fit_generator\n return self.fit(\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/utils/traceback_utils.py\", line 65, in error_handler\n return fn(*args, **kwargs)\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/engine/training.py\", line 1650, in fit\n tmp_logs = self.train_function(iterator)\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/engine/training.py\", line 1249, in train_function\n return step_function(self, iterator)\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/engine/training.py\", line 1233, in step_function\n outputs = model.distribute_strategy.run(run_step, args=(data,))\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/engine/training.py\", line 1222, in run_step\n outputs = model.train_step(data)\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/engine/training.py\", line 1024, in train_step\n loss = self.compute_loss(x, y, y_pred, sample_weight)\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/engine/training.py\", line 1082, in compute_loss\n return self.compiled_loss(\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/engine/compile_utils.py\", line 265, in __call__\n loss_value = loss_obj(y_t, y_p, sample_weight=sw)\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/losses.py\", line 152, in __call__\n losses = call_fn(y_true, y_pred)\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/losses.py\", line 284, in call\n return ag_fn(y_true, y_pred, **self._fn_kwargs)\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/losses.py\", line 2098, in sparse_categorical_crossentropy\n return backend.sparse_categorical_crossentropy(\n File \"/opt/homebrew/lib/python3.10/site-packages/keras/backend.py\", line 5633, in sparse_categorical_crossentropy\n res = tf.nn.sparse_softmax_cross_entropy_with_logits(\nNode: 'sparse_categorical_crossentropy/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits'\nReceived a label value of 11 which is outside the valid range of [0, 5). Label values: 5 8 9 11 4 7 4 11 1 11 5 3 4 3 9 4 3 5 7 9 3 3 5 1 2 1 6 3 3 5 0 9\n\t [[{{node sparse_categorical_crossentropy/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits}}]] [Op:__inference_train_function_8562]" + ] + } + ], "source": [ "r = model.fit_generator(\n", " train_ds_r,\n", " validation_data=val_ds_r,\n", - " epochs=1,\n", + " epochs=25,\n", " steps_per_epoch=len(train_ds_r),\n", " validation_steps=len(val_ds_r)\n", ")" @@ -1238,12 +1472,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.6" + "version": "3.10.9" }, "orig_nbformat": 4, "vscode": { "interpreter": { - "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" + "hash": "b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e" } } },