CNNs are good at finding simple shapes like edges and colors in pictures. They combine these small shapes to understand bigger patterns like faces or objects.
Why CNNs understand visual patterns in TensorFlow
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(filters, kernel_size, activation='relu', input_shape=input_shape),
tf.keras.layers.MaxPooling2D(pool_size=pool_size),
...
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(units, activation='softmax')
])Conv2D layers scan small parts of the image to find simple patterns.
Pooling layers reduce image size to focus on important features.
tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1))
tf.keras.layers.MaxPooling2D((2,2))
tf.keras.layers.Flatten()
This code trains a CNN to recognize handwritten digits. It learns simple patterns like edges and curves, then combines them to identify numbers.
import tensorflow as tf from tensorflow.keras import layers, models # Load sample data: MNIST handwritten digits (train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data() # Normalize images to 0-1 range train_images = train_images / 255.0 test_images = test_images / 255.0 # Add channel dimension for grayscale train_images = train_images[..., tf.newaxis] test_images = test_images[..., tf.newaxis] # Build a simple CNN model model = models.Sequential([ layers.Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)), layers.MaxPooling2D((2,2)), layers.Conv2D(64, (3,3), activation='relu'), layers.MaxPooling2D((2,2)), layers.Flatten(), layers.Dense(64, activation='relu'), layers.Dense(10, activation='softmax') ]) # Compile the model model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # Train the model for 1 epoch history = model.fit(train_images, train_labels, epochs=1, validation_split=0.1) # Evaluate on test data test_loss, test_acc = model.evaluate(test_images, test_labels) print(f"Test accuracy: {test_acc:.4f}")
CNNs use small filters to scan images, which helps them find local patterns like edges.
Pooling layers help reduce the size of data and keep the most important features.
Stacking multiple Conv2D layers helps the model learn more complex patterns step by step.
CNNs find simple shapes first, then combine them to understand bigger patterns.
They are great for tasks involving images like recognizing objects or handwriting.
Using layers like Conv2D and MaxPooling helps the model focus on important visual details.