How can Keras be used with Embedding layer to share layers using Python?

Keras is a deep learning API written in Python that provides a high-level interface for building machine learning models. It runs on top of TensorFlow and offers essential abstractions for developing neural networks quickly and efficiently.

The Keras functional API allows you to create flexible models with shared layers − layers that can be reused multiple times within the same model. This is particularly useful for models with similar inputs that should learn the same representations.

Importing Required Libraries

First, import TensorFlow and Keras components ?

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

Creating a Shared Embedding Layer

An Embedding layer maps integer indices to dense vectors. When shared, the same embedding weights are used for multiple inputs ?

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

print("Embedding for 2000 unique words mapped to 128-dimensional vectors")
shared_embedding = layers.Embedding(2000, 128)

print("Variable-length integer sequence")
text_input_a = keras.Input(shape=(None,), dtype="int32")
print("Variable-length integer sequence") 
text_input_b = keras.Input(shape=(None,), dtype="int32")

print("Reuse the same layers to encode both the inputs")
encoded_input_a = shared_embedding(text_input_a)
encoded_input_b = shared_embedding(text_input_b)

print(f"Shape of encoded_input_a: {encoded_input_a.shape}")
print(f"Shape of encoded_input_b: {encoded_input_b.shape}")
Embedding for 2000 unique words mapped to 128-dimensional vectors
Variable-length integer sequence
Variable-length integer sequence
Reuse the same layers to encode both the inputs
Shape of encoded_input_a: (None, None, 128)
Shape of encoded_input_b: (None, None, 128)

Complete Model Example

Here's how to build a complete model using shared embedding layers ?

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

# Create shared embedding layer
shared_embedding = layers.Embedding(2000, 128)

# Define inputs
text_input_a = keras.Input(shape=(None,), dtype="int32", name="text_a")
text_input_b = keras.Input(shape=(None,), dtype="int32", name="text_b")

# Apply shared embedding to both inputs
encoded_a = shared_embedding(text_input_a)
encoded_b = shared_embedding(text_input_b)

# Add processing layers
pooled_a = layers.GlobalAveragePooling1D()(encoded_a)
pooled_b = layers.GlobalAveragePooling1D()(encoded_b)

# Concatenate and add final layers
merged = layers.concatenate([pooled_a, pooled_b])
output = layers.Dense(1, activation="sigmoid")(merged)

# Create model
model = keras.Model(inputs=[text_input_a, text_input_b], outputs=output)
print("Model created successfully")
print(f"Total parameters: {model.count_params()}")
Model created successfully
Total parameters: 256129

Benefits of Shared Layers

Benefit Description
Parameter Sharing Reduces model size by reusing weights
Consistent Learning Same features learned across different inputs
Data Efficiency Model trains on less data effectively
Memory Efficient Lower memory footprint

Key Points

  • Shared layers are instances that can be reused multiple times in the same model

  • The embedding layer learns the same word representations for both text inputs

  • Information sharing across different inputs enables better generalization

  • Particularly useful for models processing similar types of data

  • Reduces the total number of parameters in the model

Conclusion

Keras shared layers enable efficient parameter sharing between multiple inputs, reducing model complexity while maintaining performance. The Embedding layer is commonly shared when processing text inputs with similar vocabularies.

Updated on: 2026-03-25T14:51:51+05:30

380 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements