title: AttributeError: The layer has never been called and thus has no defined output shape
body: <p>I am trying to define a model happyModel()</p>
  <pre><code># GRADED FUNCTION: happyModel
  
  def happyModel():
      &quot;&quot;&quot;
      Implements the forward propagation for the binary classification model:
      ZEROPAD2D -&gt; CONV2D -&gt; BATCHNORM -&gt; RELU -&gt; MAXPOOL -&gt; FLATTEN -&gt; DENSE
  
  Note that for simplicity and grading purposes, you'll hard-code all the values
  such as the stride and kernel (filter) sizes. 
  Normally, functions should take these values as function parameters.
  
  Arguments:
  None
  
  Returns:
  model -- TF Keras model (object containing the information for the entire training process) 
  &quot;&quot;&quot;
  model = tf.keras.Sequential(
      [
          ## ZeroPadding2D with padding 3, input shape of 64 x 64 x 3
          tf.keras.layers.ZeroPadding2D(padding=(3,3), data_format=(64,64,3)),
      
          ## Conv2D with 32 7x7 filters and stride of 1            
          tf.keras.layers.Conv2D(32, (7, 7), strides = (1, 1), name = 'conv0'),
          
          ## BatchNormalization for axis 3
          
          tf.keras.layers.BatchNormalization(axis = 3, name = 'bn0'),
          
          ## ReLU            
          tf.keras.layers.Activation('relu'),
          
          ## Max Pooling 2D with default parameters            
          tf.keras.layers.MaxPooling2D((2, 2), name='max_pool0'),
      
          ## Flatten layer            
          tf.keras.layers.Flatten(),
      
          ## Dense layer with 1 unit for output &amp; 'sigmoid' activation            
          tf.keras.layers.Dense(1, activation='sigmoid', name='fc'),
          
          # YOUR CODE STARTS HERE
          
          
          # YOUR CODE ENDS HERE
      ]
  )
  
  return model
  </code></pre>
  <p>and following code is for creating the object of this model defined above:</p>
  <pre><code>happy_model = happyModel()
  # Print a summary for each layer
  for layer in summary(happy_model):
      print(layer)
      
  output = [['ZeroPadding2D', (None, 70, 70, 3), 0, ((3, 3), (3, 3))],
              ['Conv2D', (None, 64, 64, 32), 4736, 'valid', 'linear', 'GlorotUniform'],
              ['BatchNormalization', (None, 64, 64, 32), 128],
              ['ReLU', (None, 64, 64, 32), 0],
              ['MaxPooling2D', (None, 32, 32, 32), 0, (2, 2), (2, 2), 'valid'],
              ['Flatten', (None, 32768), 0],
              ['Dense', (None, 1), 32769, 'sigmoid']]
      
  comparator(summary(happy_model), output)
  </code></pre>
  <p>I got following error:</p>
  <pre><code>---------------------------------------------------------------------------
  AttributeError                            Traceback (most recent call last)
  &lt;ipython-input-67-f33284fd82fe&gt; in &lt;module&gt;
        1 happy_model = happyModel()
        2 # Print a summary for each layer
  ----&gt; 3 for layer in summary(happy_model):
        4     print(layer)
        5 
  
  ~/work/release/W1A2/test_utils.py in summary(model)
       30     result = []
       31     for layer in model.layers:
  ---&gt; 32         descriptors = [layer.__class__.__name__, layer.output_shape, layer.count_params()]
       33         if (type(layer) == Conv2D):
       34             descriptors.append(layer.padding)
  
  /opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py in output_shape(self)
     2177     &quot;&quot;&quot;
     2178     if not self._inbound_nodes:
  -&gt; 2179       raise AttributeError('The layer has never been called '
     2180                            'and thus has no defined output shape.')
     2181     all_output_shapes = set(
  
  AttributeError: The layer has never been called and thus has no defined output shape.
  </code></pre>
  <p>I suspect my calling of <code>ZeroPadding2D()</code> is not right. The project seems to require the input shape of <code>ZeroPadding2D()</code> to be 64X64X3. I tried many formats but could not fix the problem. Anyone can give a pointer? Thanks a lot.</p>