Hi,
In assignment 2 , inside happyModel() function , I wanted to create Sequential layer by first instantiating the Sequence() and then adding layers one by one , but here I am getting error that AttributeError: The layer has never been called and thus has no defined output shape.
I don’t understand this line tried stackoverflow also but not that much help, can anyone tell me meaning of the error.
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import ZeroPadding2D, Conv2D, BatchNormalization, ReLU,
MaxPooling2D, Flatten,Dense
model = tf.keras.Sequential()
model.add(ZeroPadding2D(padding=(3,3)))
model.add(Conv2D(32, (7,7),strides=1))
model.add(BatchNormalization(axis=3))
model.add(ReLU())
model.add(MaxPooling2D())
model.add(Flatten())
model.add(Dense(1,activation = 'sigmoid'))
I guess you are getting this error because, you haven’t defined the input_shape argument in the ZeroPadding2D layer. And this leads to an error because the further layers depends on the shapes of their inputs.
Thanks, that was causing problem.
If you don’t mind can you tell me why we need to define input shape.
As when I don’t define it I am getting error :
AttributeError: The layer has never been called and thus has no defined output shape.
If I am correct, then it is because that when you are trying to add ZeroMaxPadding2D without the input_shape argument, it raises an error, and your model as of now, consists of only the sequential layer.
But Sequential and Functional, as we learned are just the wrappers for models, so essentially there your model is an empty model, and therefore is not called, and since it is not called, hence no output shape as well