Week3 , PA2 - Image Segmentation - Loss increases and accuracy reduces after 30 epochs

4 - Train the Model

4 - Train the Model

EPOCHS = 40
VAL_SUBSPLITS = 5
BUFFER_SIZE = 500
BATCH_SIZE = 32
train_dataset = processed_image_ds.cache().shuffle(BUFFER_SIZE).batch(BATCH_SIZE)
print(processed_image_ds.element_spec)
model_history = unet.fit(train_dataset, epochs=EPOCHS)
(TensorSpec(shape=(96, 128, 3), dtype=tf.float32, name=None), TensorSpec(shape=(96, 128, 1), dtype=tf.uint8, name=None))
Epoch 1/40
34/34 [==============================] - 13s 182ms/step - loss: 0.3786 - accuracy: 0.8874
Epoch 2/40
34/34 [==============================] - 2s 47ms/step - loss: 0.3299 - accuracy: 0.9004
Epoch 3/40
34/34 [==============================] - 2s 48ms/step - loss: 0.2998 - accuracy: 0.9094
Epoch 4/40
34/34 [==============================] - 2s 47ms/step - loss: 0.2765 - accuracy: 0.9169
Epoch 5/40
34/34 [==============================] - 2s 47ms/step - loss: 0.2484 - accuracy: 0.9262
Epoch 6/40
34/34 [==============================] - 2s 47ms/step - loss: 0.2219 - accuracy: 0.9349
Epoch 7/40
34/34 [==============================] - 2s 47ms/step - loss: 0.2169 - accuracy: 0.9362
Epoch 8/40
34/34 [==============================] - 2s 47ms/step - loss: 0.1995 - accuracy: 0.9414
Epoch 9/40
34/34 [==============================] - 2s 47ms/step - loss: 0.1799 - accuracy: 0.9470
Epoch 10/40
34/34 [==============================] - 2s 47ms/step - loss: 0.1671 - accuracy: 0.9510
Epoch 11/40
34/34 [==============================] - 2s 47ms/step - loss: 0.1569 - accuracy: 0.9540
Epoch 12/40
34/34 [==============================] - 2s 47ms/step - loss: 0.1465 - accuracy: 0.9570
Epoch 13/40
34/34 [==============================] - 2s 47ms/step - loss: 0.1414 - accuracy: 0.9584
Epoch 14/40
34/34 [==============================] - 2s 47ms/step - loss: 0.1315 - accuracy: 0.9612
Epoch 15/40
34/34 [==============================] - 2s 47ms/step - loss: 0.2041 - accuracy: 0.9402
Epoch 16/40
34/34 [==============================] - 2s 47ms/step - loss: 0.1510 - accuracy: 0.9554
Epoch 17/40
34/34 [==============================] - 2s 47ms/step - loss: 0.1284 - accuracy: 0.9626
Epoch 18/40
34/34 [==============================] - 2s 47ms/step - loss: 0.1219 - accuracy: 0.9639
Epoch 19/40
34/34 [==============================] - 2s 47ms/step - loss: 0.1125 - accuracy: 0.9668
Epoch 20/40
34/34 [==============================] - 2s 47ms/step - loss: 0.1072 - accuracy: 0.9681
Epoch 21/40
34/34 [==============================] - 2s 47ms/step - loss: 0.1035 - accuracy: 0.9691
Epoch 22/40
34/34 [==============================] - 2s 47ms/step - loss: 0.1005 - accuracy: 0.9699
Epoch 23/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0953 - accuracy: 0.9713
Epoch 24/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0941 - accuracy: 0.9713
Epoch 25/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0912 - accuracy: 0.9722
Epoch 26/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0920 - accuracy: 0.9716
Epoch 27/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0864 - accuracy: 0.9735
Epoch 28/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0815 - accuracy: 0.9748
Epoch 29/40
34/34 [==============================] - 2s 48ms/step - loss: 0.0800 - accuracy: 0.9750
Epoch 30/40
34/34 [==============================] - 2s 48ms/step - loss: 0.0870 - accuracy: 0.9728
Epoch 31/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0798 - accuracy: 0.9753
Epoch 32/40
34/34 [==============================] - 2s 47ms/step - loss: 1.5339 - accuracy: 0.5940
Epoch 33/40
34/34 [==============================] - 2s 47ms/step - loss: 1.1667 - accuracy: 0.6686
Epoch 34/40
34/34 [==============================] - 2s 47ms/step - loss: 0.7835 - accuracy: 0.7854
Epoch 35/40
34/34 [==============================] - 2s 47ms/step - loss: 0.6724 - accuracy: 0.8186
Epoch 36/40
34/34 [==============================] - 2s 47ms/step - loss: 0.5586 - accuracy: 0.8473
Epoch 37/40
34/34 [==============================] - 2s 47ms/step - loss: 0.5209 - accuracy: 0.8563
Epoch 38/40
34/34 [==============================] - 2s 47ms/step - loss: 0.4648 - accuracy: 0.8698
Epoch 39/40
34/34 [==============================] - 2s 47ms/step - loss: 0.3811 - accuracy: 0.8883
Epoch 40/40
34/34 [==============================] - 2s 47ms/step - loss: 0.3544 - accuracy: 0.8950

Loss should be strictly decreasing with every epoch ? (and hence accuracy increases ?)
Seems to be easily reproducible for me

From another run

(TensorSpec(shape=(96, 128, 3), dtype=tf.float32, name=None), TensorSpec(shape=(96, 128, 1), dtype=tf.uint8, name=None))
Epoch 1/40
34/34 [==============================] - 13s 183ms/step - loss: 0.0643 - accuracy: 0.9794
Epoch 2/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0602 - accuracy: 0.9807
Epoch 3/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0611 - accuracy: 0.9805
Epoch 4/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0542 - accuracy: 0.9828
Epoch 5/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0586 - accuracy: 0.9813
Epoch 6/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0580 - accuracy: 0.9814
Epoch 7/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0562 - accuracy: 0.9818
Epoch 8/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0538 - accuracy: 0.9828
Epoch 9/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0518 - accuracy: 0.9833
Epoch 10/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0516 - accuracy: 0.9834
Epoch 11/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0583 - accuracy: 0.9816
Epoch 12/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0520 - accuracy: 0.9834
Epoch 13/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0476 - accuracy: 0.9848
Epoch 14/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0467 - accuracy: 0.9850
Epoch 15/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0463 - accuracy: 0.9851
Epoch 16/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0467 - accuracy: 0.9848
Epoch 17/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0451 - accuracy: 0.9857
Epoch 18/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0477 - accuracy: 0.9845
Epoch 19/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0463 - accuracy: 0.9849
Epoch 20/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0479 - accuracy: 0.9843
Epoch 21/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0420 - accuracy: 0.9865
Epoch 22/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0438 - accuracy: 0.9857
Epoch 23/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0412 - accuracy: 0.9865
Epoch 24/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0460 - accuracy: 0.9852
Epoch 25/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0542 - accuracy: 0.9822
Epoch 26/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0438 - accuracy: 0.9859
Epoch 27/40
34/34 [==============================] - 2s 47ms/step - loss: 0.0460 - accuracy: 0.9852
Epoch 28/40
34/34 [==============================] - 2s 47ms/step - loss: 6.4389 - accuracy: 0.4048
Epoch 29/40
34/34 [==============================] - 2s 47ms/step - loss: 1.5150 - accuracy: 0.5406
Epoch 30/40
34/34 [==============================] - 2s 46ms/step - loss: 1.2287 - accuracy: 0.6646
Epoch 31/40
34/34 [==============================] - 2s 47ms/step - loss: 0.8803 - accuracy: 0.7558
Epoch 32/40
34/34 [==============================] - 2s 47ms/step - loss: 0.7476 - accuracy: 0.7734
Epoch 33/40
34/34 [==============================] - 2s 47ms/step - loss: 0.6725 - accuracy: 0.7968
Epoch 34/40
34/34 [==============================] - 2s 47ms/step - loss: 0.6147 - accuracy: 0.8190
Epoch 35/40
34/34 [==============================] - 2s 46ms/step - loss: 0.5848 - accuracy: 0.8319
Epoch 36/40
34/34 [==============================] - 2s 46ms/step - loss: 0.5421 - accuracy: 0.8435
Epoch 37/40
34/34 [==============================] - 2s 46ms/step - loss: 0.5053 - accuracy: 0.8519
Epoch 38/40
34/34 [==============================] - 2s 46ms/step - loss: 0.4767 - accuracy: 0.8583
Epoch 39/40
34/34 [==============================] - 2s 46ms/step - loss: 0.4585 - accuracy: 0.8634
Epoch 40/40
34/34 [==============================] - 2s 46ms/step - loss: 0.4392 - accuracy: 0.8666

4.2 - Plot Model Accuracy

image

The solution surfaces here are in very high dimensions and are very complicated. It’s possible to go “off a cliff” at any iteration. There are never any guarantees of convergence. You can experiment with different optimization methods and see if you can achieve more uniform convergence. Or you can do “early stopping” when you hit some threshold like 98% accuracy.