Absolute value layer in CNN
Question:
I’m new to CNN. I’m trying to build a CNN, and I have the following steps:
model.add(Conv2D(8, (5, 5), input_shape=(256, 256, 1), padding='same', use_bias=False)) # use_bias=False
model.add(BatchNormalization())
model.add(Activation(tanh))
model.add(AveragePooling2D (pool_size= (5,5), strides=2))
I’m trying to add absolute value layer after the first step after applying 2DConv.. I’m read the answer in the link Absolute value layer in CNN trying the following code:
rom keras.models import model_from_json
model.add(Conv2D(8, (5, 5), input_shape=(256, 256, 1), padding='same', use_bias=False)) # use_bias=False
outputlayer1 = model.layers[0].output
outputlayer = abs(outputlayer1)
model.layers[0].output = outputlayer
new_model = model_from_json(model.to_json())
new_model.summary()
I’m getting the error:
AttributeError: can't set attribute
Please, how I can applying the absolute value on the outputs of 2Dconv layer.
With my thanks
Answers:
One way to access the output of layer number 2, applied to an image would be :
from keras.models import Model
model_part = Model(input = model.input,
output = model.layers[1].output)
vals = model.predict(image)
print(vals)
Either way, you should check if an absolute value layer is useful in your case, or if it would already be implicit in one of your following layers.
You can use lambda layer for that purpose.
tf.keras.layers.Lambda(lambda x: tf.abs(x))
I’m new to CNN. I’m trying to build a CNN, and I have the following steps:
model.add(Conv2D(8, (5, 5), input_shape=(256, 256, 1), padding='same', use_bias=False)) # use_bias=False
model.add(BatchNormalization())
model.add(Activation(tanh))
model.add(AveragePooling2D (pool_size= (5,5), strides=2))
I’m trying to add absolute value layer after the first step after applying 2DConv.. I’m read the answer in the link Absolute value layer in CNN trying the following code:
rom keras.models import model_from_json
model.add(Conv2D(8, (5, 5), input_shape=(256, 256, 1), padding='same', use_bias=False)) # use_bias=False
outputlayer1 = model.layers[0].output
outputlayer = abs(outputlayer1)
model.layers[0].output = outputlayer
new_model = model_from_json(model.to_json())
new_model.summary()
I’m getting the error:
AttributeError: can't set attribute
Please, how I can applying the absolute value on the outputs of 2Dconv layer.
With my thanks
One way to access the output of layer number 2, applied to an image would be :
from keras.models import Model
model_part = Model(input = model.input,
output = model.layers[1].output)
vals = model.predict(image)
print(vals)
Either way, you should check if an absolute value layer is useful in your case, or if it would already be implicit in one of your following layers.
You can use lambda layer for that purpose.
tf.keras.layers.Lambda(lambda x: tf.abs(x))