Since we know keras model needs to be built and compiled before executing compared to eager execution in TF2 or dynamic graph in PyTorch, therefore, we need to build a new model to get the output of the middle layer. It is easier than PyTorch since we can create a sub graph using the original keras model and will not modify the original model.
> [layer.name for layer in tf_model.layers]# ['Input-Token',# 'Input-Segment',# 'Embedding-Token',# 'Embedding-Segment',# .......# 'Transformer-11-FeedForward-Dropout',# 'Transformer-11-FeedForward-Add',# 'Transformer-11-FeedForward-Norm',# **************************************************# ** in case we want the output before last layer **# **************************************************# 'dense']> layer_model = keras.models.Model(inputs=tf_model.input, outputs=tf_model.get_layer('Transformer-11-FeedForward-Norm').output)> layer_output =layer_model(x_input)