# AutoFL: Towards AutoML in a Federated Learning Context
## 5 Evaluation
### Discussion
```
1 mooel=tf.keras.models.Sequential({
2 tf.keras.layers.Conv2D(32,kernel_size=(3,3),activation='relu',padding='same',input_shape=(28,28,1)),
3 tf.keras.layers.Conv2D(32,kernel_size=(3,3),activation='relu',padding='same'),
5 tf.keras.layers.BatchNormalization(),
6 tf.keras.layers.MaxPool2D(pool_size=(2,2)],
7 tf.keras.layers.Dropout(0.25),
8
9 tf.keras.layers.Conv2D(64,kernel_size=(3,3),activation='relu',padding='same'),
10 tf.keras.layers.Conv2D(64,kernel_size=(3,3),activation='relu',padding='same'),
11 tf.keras.layers.BatchNormalization(),
12 tf.keras.layers.MaxPool2D(pool_size=(2,2)],
13 tf.keras.layers.Dropout(0.25),
14
15 tf.keras.layers.Conv2D(128,kernel_size=(3,3),activation='relu',padding='same'),
16 tf.keras.layers.Conv2D(128,kernel_size=(3,3),activation='relu',padding='same'),
17 tf.keras.layers.Conv2D(128,kernel_size=(3,3),activation='relu',padding='same'),
18 tf.keras.layers.Conv2D(128,kernel_size=(3,3),activation='relu',padding='same'),
19 tf.keras.layers.Conv2D(128,kernel_size=(3,3),activation='relu',padding='same'),
20 tf.keras.layers.Conv2D(128,kernel_size=(3,3),activation='relu',padding='same'),
21 tf.keras.layers.BatchNormalization(),
22 tf.keras.layers.Conv2D(128,kernel_size=(3,3),activation='relu',padding='same'),
23 tf.keras.layers.Conv2D(128,kernel_size=(3,3),activation='relu',padding='same'),
24 tf.keras.layers.BatchNormalization(),
25 tf.keras.layers.BatchNormalization(),
26 tf.keras.layers.Dropout(0.4),
27 tf.keras.layers.Dense(64,activation='relu'),
28 tf.keras.layers.BatchNormalization(),
29 tf.keras.layers.BatchNormalization(),
30 tf.keras.layers.Dropout(0.3),
31 tf.keras.layers.Dense(n.classes,activation='softmax')
32
33
34
35 tf.keras.layers.Dense(n.classes,activation='softmax')
36
37
38 loss_fn=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
39 mooel.compile(optimizer='adam',lossloss_fn, metrics=['accuracy'])
```  
**Listing 4** Federal learned neural network for MNIST achieving an accuracy of 0.9945. The previous experiments have demonstrated the practical feasibility of optimizing for multiple objectives while adhering to various constraints. However, it is important to note that these experiments were conducted using well-known datasets and may not fully represent real-world case studies. One of the main objectives of AutoFL is to uncover significant trade-offs in terms of model performance and resource utilization, considering factors such as memory usage and computational complexity. However, AutoFL itself does not determine the metrics to optimize for. This responsibility lies with the MLOps engineer, who has to define the optimization objectives and set deployment, configuration, security as well as privacy constraints based on the specific application requirements. It is crucial to understand that AutoFL can assist in identifying trade-offs, but the final model selection remains the responsibility of the MLOps engineer. AutoFL provides a range of model configurations that lie on the Pareto front, which represents the trade-off between the predefined optimization objectives. It is up to the MLOps engineer to choose the 'best' model from the Pareto front that aligns most effectively with the application's requirements.