this is the code from the TensorFlow website, but doesn't explain well,
normalization_layer = tf.keras.layers.Rescaling(1./255)
train_data = train_data.map(lambda x, y: (normalization_layer(x), y)) # Where x—images, y—labels.
i know what is the goal of this code which is to normalize data and make it between 0 and 1 instead of 0 to 255, but I need to understand what does lambda means here.
CodePudding user response:
I'm assuming train_data is a tf.dataset
Each element inside a tf.dataset is stored in the form of a tuple of X and y values like this (X,y).
To access say, each element in a tuple in python, you can do
for X,y in tuple_list:
print(X)
print(y)
This is essentially what map with lambda does in the tf.dataset
This is what happens inside the map function
- x-images of train data is assigned x
- y-labels of train data is assigned y
- You create a new tuple where x becomes
normalization_layer(x)and y staysy - This is done for every example in
train_data - This is fed back and stored in
train_data(Since you are overwriting the variable)
See here for more information on how the Lambda function generally works in Python. Would specifically draw attention to general lambda syntax
lambda args: expression
CodePudding user response:
The best way to explain I think is to see a simpler example:
list(map(lambda n: n * 3, [1, 2, 3, 4, 5]))
>> [3, 6, 9, 12, 15]
In this case you're applying to each (because of map) element n of the list [1, 2, 3, 4, 5] the same operation n * 3.
In your specific case it's a bit more complicated because you have two variables. What happens is that for each (x, y) pair of your train_data you are leaving y as is, and applying the normalization to x.
