Tutorial 3: Advanced Usage#
Estimated time: 25 minutes
Explore advanced techniques and patterns for visualizing complex models.
Overview#
In this tutorial, you’ll learn:
Visualizing complex multi-path architectures
Working with Functional models
Creating publication-ready figures
Best practices and tips
Complex Model Architectures#
visualkeras works great for visualizing complex models:
import tensorflow as tf
from tensorflow import keras
import visualkeras
# Create a more complex Functional model
inputs = keras.Input(shape=(224, 224, 3))
# Branch 1: Large convolutions
x1 = keras.layers.Conv2D(32, (5, 5), padding='same', activation='relu')(inputs)
x1 = keras.layers.MaxPooling2D((2, 2))(x1)
# Branch 2: Small convolutions
x2 = keras.layers.Conv2D(32, (3, 3), padding='same', activation='relu')(inputs)
x2 = keras.layers.MaxPooling2D((2, 2))(x2)
# Merge branches
merged = keras.layers.Concatenate()([x1, x2])
x = keras.layers.Conv2D(64, (3, 3), activation='relu')(merged)
outputs = keras.layers.Dense(10, activation='softmax')(keras.layers.Flatten()(x))
model = keras.Model(inputs=inputs, outputs=outputs)
# Visualize with graph view for complex architectures
visualkeras.graph_view(model).show()
Graph View for Complex Models#
The graph view is ideal for multi-input, multi-output, and residual models:
# Works great for Functional models with complex connections
visualkeras.graph_view(model).show()
# Can also work with layered view for simpler visualization
visualkeras.layered_view(model).show()
Publication-Ready Figures#
Create figures suitable for papers and presentations:
from visualkeras import options
# High-quality output
image = visualkeras.layered_view(
model,
color_map={
keras.layers.Conv2D: '#1f77b4',
keras.layers.MaxPooling2D: '#2ca02c',
keras.layers.Dense: '#d62728',
},
scale_xy=40,
scale_z=40
)
# Save at high resolution
image.save('model_architecture_highres.png')
Best Practices#
For CNNs, prefer layered view:
# Layered view is intuitive for CNNs
visualkeras.layered_view(model).show()
For complex models, use graph view:
# Graph view handles complexity better
visualkeras.graph_view(model).show()
Adjust scale for clarity:
# If too crowded, increase scale
visualkeras.layered_view(
model,
scale_xy=20 # Reduce size
).show()
# If too small, decrease scale
visualkeras.layered_view(
model,
scale_xy=50 # Increase size
).show()
Tips & Tricks#
Visualize model stages:
# Visualize just the feature extraction part
feature_extractor = keras.Model(
inputs=model.input,
outputs=model.layers[-3].output # Before final Dense layers
)
visualkeras.layered_view(feature_extractor).show()
Compare architectures:
# Create multiple visualizations for comparison
model1 = # ... your model 1
model2 = # ... your model 2
img1 = visualkeras.layered_view(model1)
img2 = visualkeras.layered_view(model2)
img1.show() # View first
img2.show() # View second
Batch processing multiple models:
models = [model1, model2, model3]
for i, model in enumerate(models):
image = visualkeras.layered_view(model)
image.save(f'model_{i}.png')
Next Steps#
You’ve mastered the fundamentals! Now:
Explore the Examples for real-world use cases
Check the API Reference for detailed API reference
See the Installation for troubleshooting
Have a suggestion or found a bug? Visit the GitHub repository.