does not match the input value:
[‘Conv2D’, (None, 6, 8, 256), 590080, ‘same’, ‘relu’, ‘HeNormal’]
I don’t understand where is the problem. I am using:
cblock2 = conv_block(cblock1[0], n_filters2)
cblock3 = conv_block(cblock2[0], n_filters4)
cblock4 = conv_block(cblock3[0], n_filters*8, dropout_prob=0.3)
For the ublocks, at each step, you should use half the number of filters of the previous block. The previous block before ublock6 is cblock5. So ublock6 should have half the number of filters of cblock5. Then ublock7 should have half the number of filters of ublock6 and so on.
def unet_model(input_size=(96,128,3), n_filters=32, n_classes=23):
“”"
Unet model
Arguments:
input_size -- Input shape
n_filters -- Number of filters for the convolutional layers
n_classes -- Number of output classes
Returns:
model -- tf.keras.Model
"""
inputs = Input(input_size)
# Contracting Path (encoding)
# Add a conv_block with the inputs of the unet_ model and n_filters
### START CODE HERE
cblock1 = conv_block(inputs, n_filters= n_filters)
cblock2 = conv_block(cblock1[0],n_filters=n_filters*2)
cblock3 = conv_block(cblock2[0],n_filters=n_filters*4)
cblock4 = conv_block(cblock3[0],n_filters=n_filters*8,dropout_prob=0.3)
cblock5 = conv_block(cblock4[0],n_filters=n_filters*16,dropout_prob=0.3,max_pooling=False)
YOUR CODE ENDS HERE
Expanding Path (decoding)
Add the first upsampling_block.
Use the cblock5[0] as expansive_input and cblock4[1] as contractive_input and n_filters * 8
ublock6 = upsampling_block(None, None, None)
Chain the output of the previous block as expansive_input and the corresponding contractive block output.
Note that you must use the second element of the contractive block i.e before the maxpooling layer.
At each step, use half the number of filters of the previous block