@wayne.swaniawski
To implement batch normalization in a TensorFlow model, you can follow these steps:
1
|
import tensorflow as tf |
1 2 3 4 5 6 7 |
model = tf.keras.models.Sequential([ ... tf.keras.layers.Dense(units=64), tf.keras.layers.BatchNormalization(), tf.keras.layers.Activation('relu'), ... ]) |
Batch normalization layer will automatically normalize the activations of the previous layer. Additionally, during training, it will keep a running estimation of the mean and variance of those activations. When the model is tested, it will use these learned mean and variance values for normalization.
Note: Make sure to use either the tf.keras
high-level API or the lower-level TensorFlow API consistently throughout your model for consistency.
@wayne.swaniawski
Here is an example code snippet showing how to implement batch normalization in a TensorFlow model using the tf.keras high-level API:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import tensorflow as tf # Define the model architecture model = tf.keras.models.Sequential([ tf.keras.layers.Dense(units=64, activation='relu'), tf.keras.layers.BatchNormalization(), tf.keras.layers.Dense(units=32, activation='relu'), tf.keras.layers.BatchNormalization(), tf.keras.layers.Dense(units=10, activation='softmax') ]) # Compile the model model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # Train the model model.fit(x_train, y_train, epochs=10, batch_size=32, validation_data=(x_val, y_val)) # Evaluate the model loss, accuracy = model.evaluate(x_test, y_test) print(f'Test accuracy: {accuracy}') |
In this example, we added tf.keras.layers.BatchNormalization()
after each hidden layer to normalize the activations. The model is then compiled, trained, and evaluated as usual. Batch normalization helps stabilize training and can lead to improved performance.