Could someone help ?
Error:
ValueError: Error when checking target: expected conv2d_19 to have 4 dimensions, but got array with shape (5, 256, 256)
Summary :
Layer (type) Output Shape Param # Connected to
input_1 (InputLayer) (None, 256, 256, 3) 0
conv2d_1 (Conv2D) (None, 256, 256, 32) 896 input_1[0][0]
conv2d_2 (Conv2D) (None, 256, 256, 32) 9248 conv2d_1[0][0]
max_pooling2d_1 (MaxPooling2D) (None, 128, 128, 32) 0 conv2d_2[0][0]
conv2d_3 (Conv2D) (None, 128, 128, 64) 18496 max_pooling2d_1[0][0]
conv2d_4 (Conv2D) (None, 128, 128, 64) 36928 conv2d_3[0][0]
max_pooling2d_2 (MaxPooling2D) (None, 64, 64, 64) 0 conv2d_4[0][0]
conv2d_5 (Conv2D) (None, 64, 64, 128) 73856 max_pooling2d_2[0][0]
conv2d_6 (Conv2D) (None, 64, 64, 128) 147584 conv2d_5[0][0]
max_pooling2d_3 (MaxPooling2D) (None, 32, 32, 128) 0 conv2d_6[0][0]
conv2d_7 (Conv2D) (None, 32, 32, 256) 295168 max_pooling2d_3[0][0]
conv2d_8 (Conv2D) (None, 32, 32, 256) 590080 conv2d_7[0][0]
max_pooling2d_4 (MaxPooling2D) (None, 16, 16, 256) 0 conv2d_8[0][0]
conv2d_9 (Conv2D) (None, 16, 16, 512) 1180160 max_pooling2d_4[0][0]
conv2d_10 (Conv2D) (None, 16, 16, 512) 2359808 conv2d_9[0][0]
up_sampling2d_1 (UpSampling2D) (None, 32, 32, 512) 0 conv2d_10[0][0]
concatenate_1 (Concatenate) (None, 32, 32, 768) 0 up_sampling2d_1[0][0]
conv2d_8[0][0]
conv2d_11 (Conv2D) (None, 32, 32, 256) 1769728 concatenate_1[0][0]
conv2d_12 (Conv2D) (None, 32, 32, 256) 590080 conv2d_11[0][0]
up_sampling2d_2 (UpSampling2D) (None, 64, 64, 256) 0 conv2d_12[0][0]
concatenate_2 (Concatenate) (None, 64, 64, 384) 0 up_sampling2d_2[0][0]
conv2d_6[0][0]
conv2d_13 (Conv2D) (None, 64, 64, 128) 442496 concatenate_2[0][0]
conv2d_14 (Conv2D) (None, 64, 64, 128) 147584 conv2d_13[0][0]
up_sampling2d_3 (UpSampling2D) (None, 128, 128, 128 0 conv2d_14[0][0]
concatenate_3 (Concatenate) (None, 128, 128, 192 0 up_sampling2d_3[0][0]
conv2d_4[0][0]
conv2d_15 (Conv2D) (None, 128, 128, 64) 110656 concatenate_3[0][0]
conv2d_16 (Conv2D) (None, 128, 128, 64) 36928 conv2d_15[0][0]
up_sampling2d_4 (UpSampling2D) (None, 256, 256, 64) 0 conv2d_16[0][0]
concatenate_4 (Concatenate) (None, 256, 256, 96) 0 up_sampling2d_4[0][0]
conv2d_2[0][0]
conv2d_17 (Conv2D) (None, 256, 256, 32) 27680 concatenate_4[0][0]
conv2d_18 (Conv2D) (None, 256, 256, 32) 9248 conv2d_17[0][0]
conv2d_19 (Conv2D) (None, 256, 256, 1) 33 conv2d_18[0][0]
Total params: 7,846,657
Trainable params: 7,846,657
Non-trainable params: 0
Code:
`
def unet():
inputs = Input((img_w, img_h,3))
conv1 = Conv2D(32, (3, 3), activation="relu", padding="same")(inputs)
conv1 = Conv2D(32, (3, 3), activation="relu", padding="same")(conv1)
pool1 = MaxPooling2D(pool_size=(2, 2))(conv1)
conv2 = Conv2D(64, (3, 3), activation="relu", padding="same")(pool1)
conv2 = Conv2D(64, (3, 3), activation="relu", padding="same")(conv2)
pool2 = MaxPooling2D(pool_size=(2, 2))(conv2)
conv3 = Conv2D(128, (3, 3), activation="relu", padding="same")(pool2)
conv3 = Conv2D(128, (3, 3), activation="relu", padding="same")(conv3)
pool3 = MaxPooling2D(pool_size=(2, 2))(conv3)
conv4 = Conv2D(256, (3, 3), activation="relu", padding="same")(pool3)
conv4 = Conv2D(256, (3, 3), activation="relu", padding="same")(conv4)
pool4 = MaxPooling2D(pool_size=(2, 2))(conv4)
conv5 = Conv2D(512, (3, 3), activation="relu", padding="same")(pool4)
conv5 = Conv2D(512, (3, 3), activation="relu", padding="same")(conv5)
up6 = concatenate([UpSampling2D(size=(2, 2))(conv5), conv4], axis=3)
conv6 = Conv2D(256, (3, 3), activation="relu", padding="same")(up6)
conv6 = Conv2D(256, (3, 3), activation="relu", padding="same")(conv6)
up7 = concatenate([UpSampling2D(size=(2, 2))(conv6), conv3], axis=3)
conv7 = Conv2D(128, (3, 3), activation="relu", padding="same")(up7)
conv7 = Conv2D(128, (3, 3), activation="relu", padding="same")(conv7)
up8 = concatenate([UpSampling2D(size=(2, 2))(conv7), conv2], axis=3)
conv8 = Conv2D(64, (3, 3), activation="relu", padding="same")(up8)
conv8 = Conv2D(64, (3, 3), activation="relu", padding="same")(conv8)
up9 = concatenate([UpSampling2D(size=(2, 2))(conv8), conv1], axis=3)
conv9 = Conv2D(32, (3, 3), activation="relu", padding="same")(up9)
conv9 = Conv2D(32, (3, 3), activation="relu", padding="same")(conv9)
conv10 = Conv2D(n_label, (1, 1), activation="sigmoid")(conv9)
#conv10= Conv2D(n_label, (1, 1), activation="softmax")(conv9)
model = Model(inputs=inputs, outputs=conv10)
model.compile(optimizer='Adam', loss='binary_crossentropy', metrics=['accuracy'])
return model
`