Dense Networks in AI
(Fully Connected Neural Networks)
1. What is a Neural Network?
A neural network is like an AI “brain” that learns patterns from data.
- It has layers of tiny “neurons” (think of them as smart calculators).
- Data goes in the front → gets processed layer by layer → answer comes out the back.
The most common type is a Dense Network (also called Fully Connected Network or Multi-Layer Perceptron). Every neuron in one layer talks to every neuron in the next layer. That’s why it’s called “dense” — lots of connections!
Here’s a simple picture of a dense neural network:
Look at the picture above:
- Left = Input Layer (raw data comes in)
- Middle = Hidden Layers (where the magic learning happens)
- Right = Output Layer (final answer)
2. Zoom In: What is a “Dense Layer”?
In a dense layer, every single neuron connects to every neuron in the previous layer. Each connection has a weight (a number that says “how important is this input?”).
Imagine 3 inputs talking to 4 neurons — that’s 12 connections! Every one gets its own weight.
Here’s a close-up view of how dense connections work (plus the full flow of information):
Key parts inside one neuron:
- Inputs (x) → numbers from previous layer.
- Weights (w) → numbers the AI learns (like volume knobs).
- Bias (b) → a little extra number added (helps the neuron “shift” its decision).
- Sum → multiply inputs by weights and add bias:
- Activation function → decides if the neuron “fires” (sends signal forward). Common ones:
- ReLU (most popular): turns negative numbers to 0 → simple and fast.
- Sigmoid → squishes output between 0 and 1 (great for yes/no answers).
Here are the most common activation functions in one easy chart:
Why activation? Without it, the whole network would just be one big straight line (no curves, no complex learning).
3. How Does It Actually Learn? (Forward + Backward)
- Forward Propagation: Data flows from left to right → each layer does the math above → final prediction.
- Loss: Compare prediction vs real answer (how wrong was it?).
- Backward Propagation (backprop): The network goes backward and tweaks all the weights a tiny bit to make the loss smaller.
- Repeat thousands of times = the network learns!
The picture you saw earlier (the second image) shows exactly this forward + backward flow.
4. Your First Dense Network — Complete Beginner Example
We’ll build a network that learns to classify Iris flowers into 3 types (super famous beginner dataset).
- Input: 4 measurements (sepal length, etc.)
- Output: 3 classes (setosa, versicolor, virginica)
Step-by-step code explanation (using TensorFlow/Keras — the easiest for beginners):
# STEP 1: Import the tools
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
import numpy as np
# STEP 2: Get and prepare the data (like feeding the brain)
iris = load_iris()
X = iris.data # inputs (4 features)
y = iris.target # labels (0, 1, or 2)
# Split into train/test (80% learn, 20% test)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Scale the numbers so the network doesn't get confused
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# STEP 3: Build the Dense Network
model = Sequential() # like stacking Lego blocks
# Input layer + first hidden dense layer (4 inputs → 8 neurons)
model.add(Dense(8, input_shape=(4,), activation='relu')) # Dense = fully connected!
# Second hidden dense layer
model.add(Dense(8, activation='relu'))
# Output layer (3 classes → use softmax)
model.add(Dense(3, activation='softmax'))
# STEP 4: Compile (choose how the brain learns)
model.compile(
optimizer='adam', # smart way to update weights
loss='sparse_categorical_crossentropy', # how to measure error
metrics=['accuracy'] # we care about % correct
)
# STEP 5: Train the network!
history = model.fit(X_train, y_train, epochs=50, batch_size=8, validation_split=0.2)
# STEP 6: Test it on new flowers
test_loss, test_acc = model.evaluate(X_test, y_test)
print(f"Test Accuracy: {test_acc*100:.2f}%")Line-by-line easy explanation:
Sequential()→ stack layers in order.Dense(8, activation='relu')→ create a dense (fully connected) layer with 8 neurons.input_shape=(4,)→ first layer needs to know how many inputs (4 features).softmaxon output → gives probabilities that add up to 100% for the 3 flower types.adamoptimizer +sparse_categorical_crossentropy→ standard choices for beginners (you don’t need to understand the math yet).epochs=50→ train 50 times through the whole dataset.batch_size=8→ look at 8 flowers at a time (faster learning).
How to run it:
- Install once:
pip install tensorflow scikit-learn - Copy the code into a file
dense_tutorial.py - Run it → you’ll see accuracy going up from ~30% to 95%+ !
5. What You Just Built
- 3 layers (input → hidden → hidden → output)
- All connections are dense
- It learned patterns automatically from data
- You can now change the numbers (try 16 neurons, more layers, different activations) and see what happens!
