To truly grasp the fundamentals of neural network architecture and the math behind it, I strongly recommend starting by building simple neural networks from scratch, using only NumPy instead of libraries like PyTorch or TensorFlow. This approach forces you to understand the inner workings of each layer, such as linear layers and activation functions, and helps solidify the intuition behind why each layer is necessary.
One excellent resource I found that covers these foundational topics is the CS231n: Convolutional Neural Networks for Visual Recognition course from Stanford University. This course breaks down key concepts like convolutional layers (CNNs), activation functions, and pooling layers, with comprehensive lecture notes and assignments. The best part is that the Colab notebooks for the assignments are freely available online, allowing beginners to implement and experiment with these ideas directly. You can check out the assignments here.