Back to skills
extension
Category: Content & MediaNo API key required

deep-learning

Comprehensive guide for Deep Learning with Keras 3 (Multi-Backend: JAX, TensorFlow, PyTorch). Use when building neural networks, CNNs for computer vision, RNNs/Transformers for NLP, time series forecasting, or generative models (VAEs, GANs). Covers model building (Sequential/Functional/Subclassing APIs), custom training loops, data augmentation, transfer learning, and production best practices.

personAuthor: jakexiaohubgithub

Deep Learning with Keras 3

Patterns and best practices based on Deep Learning with Python, 2nd Edition by François Chollet, updated for Keras 3 (Multi-Backend).

Core Workflow

  1. Prepare Data: Normalize, split train/val/test, create tf.data.Dataset
  2. Build Model: Sequential, Functional, or Subclassing API
  3. Compile: model.compile(optimizer, loss, metrics)
  4. Train: model.fit(data, epochs, validation_data, callbacks)
  5. Evaluate: model.evaluate(test_data)

Model Building APIs

Sequential - Simple stack of layers:

model = keras.Sequential([
    layers.Dense(64, activation="relu"),
    layers.Dense(10, activation="softmax")
])

Functional - Multi-input/output, shared layers, non-linear topologies:

inputs = keras.Input(shape=(64,))
x = layers.Dense(64, activation="relu")(inputs)
outputs = layers.Dense(10, activation="softmax")(x)
model = keras.Model(inputs=inputs, outputs=outputs)

Subclassing - Full flexibility with call() method:

class MyModel(keras.Model):
    def __init__(self):
        super().__init__()
        self.dense1 = layers.Dense(64, activation="relu")
        self.dense2 = layers.Dense(10, activation="softmax")

    def call(self, inputs):
        x = self.dense1(inputs)
        return self.dense2(x)

Quick Reference: Loss & Optimizer Selection

| Task | Loss | Final Activation | |------|------|------------------| | Binary classification | binary_crossentropy | sigmoid | | Multiclass (one-hot) | categorical_crossentropy | softmax | | Multiclass (integers) | sparse_categorical_crossentropy | softmax | | Regression | mse or mae | None |

Optimizers: rmsprop (default), adam (popular), sgd (with momentum for fine-tuning)

Domain-Specific Guides

| Topic | Reference | When to Use | |-------|-----------|-------------| | Keras 3 Migration | keras3_changes.md | START HERE: Multi-backend setup, keras.ops, import keras | | Fundamentals | basics.md | Overfitting, regularization, data prep, K-fold validation | | Keras Deep Dive | keras_working.md | Custom metrics, callbacks, training loops, tf.function | | Computer Vision | computer_vision.md | Convnets, data augmentation, transfer learning | | Advanced CV | advanced_cv.md | Segmentation, ResNets, Xception, Grad-CAM | | Time Series | timeseries.md | RNNs (LSTM/GRU), 1D convnets, forecasting | | NLP & Transformers | nlp_transformers.md | Text processing, embeddings, Transformer encoder/decoder | | Generative DL | generative_dl.md | Text generation, VAEs, GANs, style transfer | | Best Practices | best_practices.md | KerasTuner, mixed precision, multi-GPU, TPU |

Essential Callbacks

callbacks = [
    keras.callbacks.EarlyStopping(monitor="val_loss", patience=3),
    keras.callbacks.ModelCheckpoint("best.keras", save_best_only=True),
    keras.callbacks.TensorBoard(log_dir="./logs")
]
model.fit(..., callbacks=callbacks)

Utility Scripts

| Script | Description | |--------|-------------| | quick_train.py | Reusable training template with standard callbacks and history plotting | | visualize_filters.py | Visualize convnet filter patterns via gradient ascent |