Meaning of model.add(tf.keras.layers.Lambda(lambda x: x * 200))

Question:

What does the following line of code do? How to interprete?

model.add(tf.keras.layers.Lambda(lambda x: x * 200))

My interpretation:
Lambda is like a function.

>>> f = lambda x: x + 1
>>> f(3)
4

In the second example the function is called using f(3). But what is the purpose of model.add?

Asked By: Adler Müller

||

Answers:

The model.add method adds a layer to the associated Keras model. Now, the argument of this method usually is a Keras layer. In your case, it is a special kind of layer called Lambda. You are right that lambda is a function. In principle, lambda is common syntactic sugar that allows you to declare a simple function without naming it. It would be just like:

def my_func(x):
    return x*200

model.add(tf.keras.layers.Lambda(my_func))

As you can see, this is way more code for a very basic functionality. Coming back to the Lambda layer, this just applies the given function to all of the nodes of the previous layer. If you don’t understand what a Keras model is or how machine learning works, at least in a broad sense, you may want to start with some tutorials on that instead of looking into what the individual lines of code do. This way you could become productive way faster.

Answered By: idinu

I bet it is used a a last layer. Normally, you can just a have a Dense layer output. However, you can help the training by scaling up the output to around the same figures as your labels. This will depend on the activation functions you used in your model. LSTM or SimpleRNN use tanh by default and that has an output range of [-1,1]. You will use this Lambda() layer to scale the output by 200 before it adjusts the layer weights.

Answered By: M. D.
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.