Rather than showing us the code, please show us the exception that you are getting.
The point is that you are using tf.keras.Sequential and it takes an argument, which is a python list of instantiated functions. Well, they mention that you can also use the .add() function, but just making a list is simpler. So you need commas after each one. The syntax matters.
Here’s the recommended thread to read for help with both of the sections of this assignment.
OK, I got to the final function, Dense, and got the following error:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-24-f33284fd82fe> in <module>
----> 1 happy_model = happyModel()
2 # Print a summary for each layer
3 for layer in summary(happy_model):
4 print(layer)
5
<ipython-input-23-ab0190d610d7> in happyModel()
39 tfl.MaxPool2D(),
40 tfl.Flatten(),
---> 41 tfl.Dense(1, activation='sigmoid')
42
43 # YOUR CODE ENDS HERE
/opt/conda/lib/python3.7/site-packages/tensorflow/python/training/tracking/base.py in _method_wrapper(self, *args, **kwargs)
455 self._self_setattr_tracking = False # pylint: disable=protected-access
456 try:
--> 457 result = method(self, *args, **kwargs)
458 finally:
459 self._self_setattr_tracking = previous_value # pylint: disable=protected-access
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/sequential.py in __init__(self, layers, name)
140 layers = [layers]
141 for layer in layers:
--> 142 self.add(layer)
143
144 @property
/opt/conda/lib/python3.7/site-packages/tensorflow/python/training/tracking/base.py in _method_wrapper(self, *args, **kwargs)
455 self._self_setattr_tracking = False # pylint: disable=protected-access
456 try:
--> 457 result = method(self, *args, **kwargs)
458 finally:
459 self._self_setattr_tracking = previous_value # pylint: disable=protected-access
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/sequential.py in add(self, layer)
180 raise TypeError('The added layer must be '
181 'an instance of class Layer. '
--> 182 'Found: ' + str(layer))
183
184 tf_utils.assert_no_legacy_layers([layer])
TypeError: The added layer must be an instance of class Layer. Found: <class 'tensorflow.python.keras.layers.advanced_activations.ReLU'>
Well, you’re not quite to the Dense layer yet. That one uses sigmoid as the activation, right?
There are two versions (at least) of the ReLU function: you’ve used the one that is just a plain function. They wanted you to use (and gave you the link to) the one that is an instance of tf.keras.layers.
Hallelujah! (just forgot to put the parenthesis after the ReLU - careless)
Paul, you are tireless in supporting neophytes like me and I do truly appreciate it!
Great! Now be really careful if you “copy/paste” anything from the happyModel to the next part of the assignment. Once you switch to the Functional API, having those trailing commas at the end of each line is a recipe for bigtime disaster.
Isn’t programming fun? A silly comma in the wrong place can ruin your whole afternoon. 
I have an error in the Exercise 2 convolutional model as follows:
OperatorNotAllowedInGraphError Traceback (most recent call last)
<ipython-input-26-f1284300b767> in <module>
----> 1 conv_model = convolutional_model((64, 64, 3))
2 conv_model.compile(optimizer='adam',
3 loss='categorical_crossentropy',
4 metrics=['accuracy'])
5 conv_model.summary()
<ipython-input-25-3e4d8b7f7e44> in convolutional_model(input_shape)
38
39 Z1 = tfl.Conv2D(8, (4,4), 1, padding='SAME')(input_img)
---> 40 A1 = tfl.ReLU(Z1)
41 P1 = tfl.MaxPool2D((8,8), 8, padding='SAME')(A1)
42 Z2 = tfl.Conv2D(16, (2,2), 1, padding='SAME')(P1)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/layers/advanced_activations.py in __init__(self, max_value, negative_slope, threshold, **kwargs)
344 def __init__(self, max_value=None, negative_slope=0, threshold=0, **kwargs):
345 super(ReLU, self).__init__(**kwargs)
--> 346 if max_value is not None and max_value < 0.:
347 raise ValueError('max_value of Relu layer '
348 'cannot be negative value: ' + str(max_value))
/opt/conda/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in __bool__(self)
875 `TypeError`.
876 """
--> 877 self._disallow_bool_casting()
878
879 def __nonzero__(self):
/opt/conda/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in _disallow_bool_casting(self)
488 else:
489 # Default: V1-style Graph execution.
--> 490 self._disallow_in_graph_mode("using a `tf.Tensor` as a Python `bool`")
491
492 def _disallow_iteration(self):
/opt/conda/lib/python3.7/site-packages/tensorflow/python/framework/ops.py in _disallow_in_graph_mode(self, task)
477 raise errors.OperatorNotAllowedInGraphError(
478 "{} is not allowed in Graph execution. Use Eager execution or decorate"
--> 479 " this function with @tf.function.".format(task))
480
481 def _disallow_bool_casting(self):
OperatorNotAllowedInGraphError: using a `tf.Tensor` as a Python `bool` is not allowed in Graph execution. Use Eager execution or decorate this function with @tf.function.
Remember that the ReLU we are using here is a “Layer” function. So invoking it once, produces a function, right? Then you invoke that function with the actual input tensor(s).
To put it in a more simplistic way: realize that there need to be two sets of parens after each layer function here. But the real point is you need to understand why that is, which is what I explained in my first paragraph above.
That was also covered in some detail in the other reference thread I gave above. You did read that all the way through, right?
If you just “skimmed” it the first time, it might be worth another look. We’re going to be dealing with these APIs from here on out and in Course 5 as well, meaning it will not be wasted effort to really understand things here.