Sorry for that. In fact, I assumed that it didn't work because I got really weird accuracy results.
I've found something interesting. Without changing any parameters, sometimes i got a really good model :
Metal device set to: Apple M1
systemMemory: 16.00 GB
maxCacheSize: 5.33 GB
2022-02-09 13:18:04.110848: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:305] Could not identify NUMA node of platform GPU ID 0, defaulting to 0. Your kernel may not have been built with NUMA support.
2022-02-09 13:18:04.110957: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:271] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 0 MB memory) -> physical PluggableDevice (device: 0, name: METAL, pci bus id: <undefined>)
2022-02-09 13:18:04.304541: W tensorflow/core/platform/profile_utils/cpu_utils.cc:128] Failed to get CPU frequency: 0 Hz
Epoch 1/20
2022-02-09 13:18:04.469609: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.
12/16 [=====================>........] - ETA: 0s - loss: 0.0000e+00 - accuracy: 0.29442022-02-09 13:18:04.824160: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.
16/16 [==============================] - 1s 18ms/step - loss: 3.1066e-04 - accuracy: 0.2627 - val_loss: 0.0000e+00 - val_accuracy: 0.2002
Epoch 2/20
16/16 [==============================] - 0s 11ms/step - loss: 2.7158e-04 - accuracy: 0.4070 - val_loss: 0.0000e+00 - val_accuracy: 0.0189
Epoch 3/20
16/16 [==============================] - 0s 11ms/step - loss: 2.7422e-04 - accuracy: 0.5366 - val_loss: 0.0000e+00 - val_accuracy: 0.0300
Epoch 4/20
16/16 [==============================] - 0s 11ms/step - loss: 2.7614e-04 - accuracy: 0.4945 - val_loss: 0.0000e+00 - val_accuracy: 0.0000e+00
Epoch 5/20
16/16 [==============================] - 0s 11ms/step - loss: 2.7924e-04 - accuracy: 0.4931 - val_loss: 0.0000e+00 - val_accuracy: 0.0000e+00
Epoch 6/20
16/16 [==============================] - 0s 11ms/step - loss: 2.4457e-04 - accuracy: 0.4933 - val_loss: 0.0000e+00 - val_accuracy: 0.0000e+00
Epoch 7/20
16/16 [==============================] - 0s 11ms/step - loss: 3.3170e-04 - accuracy: 0.4931 - val_loss: 0.0000e+00 - val_accuracy: 0.0000e+00
Epoch 8/20
16/16 [==============================] - 0s 11ms/step - loss: 3.5839e-04 - accuracy: 0.4931 - val_loss: 0.0000e+00 - val_accuracy: 0.0000e+00
Epoch 9/20
16/16 [==============================] - 0s 11ms/step - loss: 3.7550e-04 - accuracy: 0.4931 - val_loss: 0.0000e+00 - val_accuracy: 0.0000e+00
Epoch 10/20
16/16 [==============================] - 0s 11ms/step - loss: 3.7018e-04 - accuracy: 0.4933 - val_loss: 0.0000e+00 - val_accuracy: 0.0000e+00
Epoch 11/20
16/16 [==============================] - 0s 13ms/step - loss: 5.4659e-04 - accuracy: 0.4933 - val_loss: 0.0000e+00 - val_accuracy: 0.0000e+00
Epoch 12/20
16/16 [==============================] - 0s 11ms/step - loss: 6.4239e-04 - accuracy: 0.4931 - val_loss: 0.0000e+00 - val_accuracy: 0.0000e+00
Epoch 13/20
16/16 [==============================] - 0s 11ms/step - loss: 7.3958e-04 - accuracy: 0.4931 - val_loss: 0.0000e+00 - val_accuracy: 0.0000e+00
Epoch 14/20
16/16 [==============================] - 0s 11ms/step - loss: 0.0013 - accuracy: 0.4434 - val_loss: 0.0000e+00 - val_accuracy: 1.0000
Epoch 15/20
16/16 [==============================] - 0s 11ms/step - loss: 6.7687e-04 - accuracy: 0.4407 - val_loss: 0.0000e+00 - val_accuracy: 0.0000e+00
Epoch 16/20
16/16 [==============================] - 0s 11ms/step - loss: 5.9926e-04 - accuracy: 0.3167 - val_loss: 0.0000e+00 - val_accuracy: 1.0000
Epoch 17/20
16/16 [==============================] - 0s 11ms/step - loss: 0.0022 - accuracy: 0.3664 - val_loss: 0.0000e+00 - val_accuracy: 0.0000e+00
Epoch 18/20
16/16 [==============================] - 0s 11ms/step - loss: 0.0017 - accuracy: 0.2534 - val_loss: 0.0000e+00 - val_accuracy: 1.0000
Epoch 19/20
16/16 [==============================] - 0s 11ms/step - loss: 0.0011 - accuracy: 0.2604 - val_loss: 0.0000e+00 - val_accuracy: 1.0000
Epoch 20/20
16/16 [==============================] - 0s 11ms/step - loss: 0.0019 - accuracy: 0.2534 - val_loss: 0.0000e+00 - val_accuracy: 1.0000
71/71 [==============================] - 0s 6ms/step - loss: 0.0064 - accuracy: 0.9996
[0.00637961458414793, 0.9995548129081726]
And sometimes I got this weird evaluation (without any changes in my code) :
[0.0023984466679394245, 0.0]