## 3 Proposed SNNtrainer3D
### User-Friendly GUI and Dynamic Architecture Editing  
The proposed application provides an intuitive user GUI for designing and training SNN models. It is accessible to researchers and practitioners and allows them to quickly iterate on different network architectures, leading to more efficient and effective models. Before starting the training, as shown in Figure 2, users can add, remove, and edit hidden layers with their corresponding number of neurons in real-time, providing model experimentation and optimization flexibility. Figure 1: Summarized view of programming languages and technologies involved in developing the proposed SNNtrainer3D. This feature allows for quick iteration on different network architectures. Also, as mentioned earlier, the application integrates Three.js, a cross-browser 3D JavaScript library and API, for visualizing the model architecture. This 3D representation enhances model understanding by allowing users to inspect the connections and structure visually, as shown in Figure 3.  
Figure 3: Summarized view of the proposed SNNtrainer3D GUI. Options to visualize in 3D the entire SNN architecture with its positive (green color rays) and negative (red color rays) weights before and after the training, the number of layers and neurons with their connections, and the ability to zoom in, rotate, and move the entire visualization are provided. Figure 2: Summarized view of the proposed SNNtrainer3D GUI. Users can enable/disable the rendering of the weights, dynamically add, edit, and remove hidden layers, as well as choose the type of neurons, number of epochs, learning rate, Beta value, number of training steps, batch size, and have the option to download the MNIST dataset. The visualization is interactive, enabling zooming, rotation, and movement. The connections between layers are represented using colors, with green indicating positive weights and red indicating negative weights. The intensity of the color represents the absolute value of the weight. After training, the weight colors are updated, providing insights into the final weights contributing to the model's accuracy. The reason for not updating the weights automatically in real-time during training is that performance will be impacted considerably due to the significant number of weights in fully connected neural network architecture layers. Therefore, the decision was taken to update them only once training is done (once the weights are downloaded, the user could use them directly in another script for inference or continue further training). This is also why a function that lets the user decide whether to render the nodes was implemented to minimize the impact on the performance, as seen in the top part of Figure 2.  
Furthermore, the user can choose the neuron type on which their SNN architecture should be trained, the number of epochs, the learning rate, the beta value, the number of training steps, and the batch size. These are some of the most important parameters when training SNNs or neural networks. Regarding the types of neurons available for the user, four pivotal neuron models within SNNs were implemented: Leaky Integrate-and-Fire (LIF), Lapicque's model (the earliest form of the LIF model), Synaptic dynamics, and the Alpha model. The LIF neuron model simulates the biological neuron's behavior by accounting for the leakiness of the neuron's membrane. It is a simplified version of the biological neuron, capturing the essential dynamics of integration and leaky behavior. It is computationally efficient, making it suitable for large-scale simulations. However, it lacks some biological details, like synaptic dynamics and adaptation mechanisms. This model integrates incoming spikes to increase the membrane potential, which leaks over time until a spike is generated when the membrane potential reaches a threshold.