- for the unet example, I did everything as mentioned in exercise 1
Exercise 1 - conv_block
Implement conv_block(...). Here are the instructions for each step in the conv_block, or contracting block:
Add 2 Conv2D layers with n_filters filters with kernel_size set to 3, kernel_initializer set to 'he_normal', padding set to 'same' and 'relu' activation.
if dropout_prob > 0, then add a Dropout layer with parameter dropout_prob
If max_pooling is set to True, then add a MaxPooling2D layer with 2x2 pool size
- but still i am getting the below error
ValueError Traceback (most recent call last)
Input In [10], in <cell line: 5>()
3 inputs = Input(input_size)
4 cblock1 = conv_block(inputs, n_filters * 1)
----> 5 model1 = tf.keras.Model(inputs=inputs, outputs=cblock1)
7 output1 = [['InputLayer', [(None, 96, 128, 3)], 0],
8 ['Conv2D', (None, 96, 128, 32), 896, 'same', 'relu', 'HeNormal'],
9 ['Conv2D', (None, 96, 128, 32), 9248, 'same', 'relu', 'HeNormal'],
10 ['MaxPooling2D', (None, 48, 64, 32), 0, (2, 2)]]
12 print('Block 1:')
File /usr/local/lib/python3.8/dist-packages/tensorflow/python/training/tracking/base.py:587, in no_automatic_dependency_tracking.<locals>._method_wrapper(self, *args, **kwargs)
585 self._self_setattr_tracking = False # pylint: disable=protected-access
586 try:
--> 587 result = method(self, *args, **kwargs)
588 finally:
589 self._self_setattr_tracking = previous_value # pylint: disable=protected-access
File /usr/local/lib/python3.8/dist-packages/keras/engine/functional.py:148, in Functional.__init__(self, inputs, outputs, name, trainable, **kwargs)
145 if not all([functional_utils.is_input_keras_tensor(t)
146 for t in tf.nest.flatten(inputs)]):
147 inputs, outputs = functional_utils.clone_graph_nodes(inputs, outputs)
--> 148 self._init_graph_network(inputs, outputs)
File /usr/local/lib/python3.8/dist-packages/tensorflow/python/training/tracking/base.py:587, in no_automatic_dependency_tracking.<locals>._method_wrapper(self, *args, **kwargs)
585 self._self_setattr_tracking = False # pylint: disable=protected-access
586 try:
--> 587 result = method(self, *args, **kwargs)
588 finally:
589 self._self_setattr_tracking = previous_value # pylint: disable=protected-access
File /usr/local/lib/python3.8/dist-packages/keras/engine/functional.py:186, in Functional._init_graph_network(self, inputs, outputs)
183 if any(not hasattr(tensor, '_keras_history') for tensor in self.outputs):
184 base_layer_utils.create_keras_history(self._nested_outputs)
--> 186 self._validate_graph_inputs_and_outputs()
188 # A Network does not create weights of its own, thus it is already
189 # built.
190 self.built = True
File /usr/local/lib/python3.8/dist-packages/keras/engine/functional.py:740, in Functional._validate_graph_inputs_and_outputs(self)
738 if not hasattr(x, '_keras_history'):
739 cls_name = self.__class__.__name__
--> 740 raise ValueError(f'Output tensors of a {cls_name} model must be '
741 'the output of a TensorFlow `Layer` '
742 f'(thus holding past layer metadata). Found: {x}')
ValueError: Output tensors of a Functional model must be the output of a TensorFlow `Layer` (thus holding past layer metadata). Found: <keras.layers.pooling.max_pooling2d.MaxPooling2D object at 0x7efc8b0ae970>