while implementing VGGSEGNET giving me following error
Below is VGGSEGNET code
Function call is like- model=VGGSegnet(n_classes=1, input_height=224, input_width=224) On following both versions getting same error
tf version=2.4.1 & 2.2.0
keras version=2.4.3 & 2.4.3
python=3.7 and python 3.8
def VGGSegnet(n_classes, input_height, input_width, vgg_level=3, pretrained_weights = None):
img_input = Input(shape=(input_height, input_width,3 ))
x = Conv2D(64, (3, 3), activation='relu', padding='same', name='block1_conv1', data_format='channels_last')(img_input)
x = Conv2D(64, (3, 3), activation='relu', padding='same', name='block1_conv2', data_format='channels_last')(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name='block1_pool1', data_format='channels_last')(x)
f1 = x
x = Conv2D(128, (3, 3), activation='relu', padding='same', name='block2_conv1', data_format='channels_last')(x)
x = Conv2D(128, (3, 3), activation='relu', padding='same', name='block2_conv2', data_format='channels_last')(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name='block2_pool', data_format='channels_last')(x)
f2 = x
x = Conv2D(256, (3, 3), activation='relu', padding='same', name='block3_conv1', data_format='channels_last')(x)
x = Conv2D(256, (3, 3), activation='relu', padding='same', name='block3_conv2', data_format='channels_last')(x)
x = Conv2D(256, (3, 3), activation='relu', padding='same', name='block3_conv3', data_format='channels_last')(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name='block3_pool1', data_format='channels_last')(x)
f3 = x
x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block4_conv1', data_format='channels_last')(x)
x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block4_conv2', data_format='channels_last')(x)
x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block4_conv3', data_format='channels_last')(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name='block4_pool1', data_format='channels_last')(x)
f4 = x
x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block5_conv1', data_format='channels_last')(x)
x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block5_conv2', data_format='channels_last')(x)
x = Conv2D(512, (3, 3), activation='relu', padding='same', name='block5_conv3', data_format='channels_last')(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name='block5_pool1', data_format='channels_last')(x)
f5 = x
x = Flatten(name='flatten')(x)
x = Dense(4096, activation='relu', name='fc1')(x)
x = Dense(4096, activation='relu', name='fc2')(x)
x = Dense(1000, activation='softmax', name='predictions')(x)
vgg = Model(img_input, x)
vgg.load_weights("image-segmentation-keras-py3-master/Models/vgg16_weights_th_dim_ordering_th_kernels.hdf5")
levels = [f1, f2, f3, f4, f5]
o = levels[vgg_level]
o = ZeroPadding2D((1,1),data_format='channels_last')(o)
o = Conv2D(512,(3,3),padding='valid',data_format='channels_last')(o)
o = BatchNormalization()(o)
o = UpSampling2D((2,2),data_format='channels_last')(o)
o = ZeroPadding2D((1,1),data_format='channels_last')(o)
o = Conv2D(256,(3,3),padding='valid',data_format='channels_last')(o)
o = BatchNormalization()(o)
o = UpSampling2D((2,2),data_format='channels_last')(o)
o = ZeroPadding2D((1,1),data_format='channels_last')(o)
o = Conv2D(128,(3,3),padding='valid',data_format='channels_last')(o)
o = BatchNormalization()(o)
o = UpSampling2D((2, 2), data_format='channels_last')(o)
o = ZeroPadding2D((1, 1), data_format='channels_last')(o)
o = Conv2D(64, (3, 3), padding='valid', data_format='channels_last')(o)
o = BatchNormalization()(o)
o = UpSampling2D((2, 2), data_format='channels_last')(o)
o = ZeroPadding2D((1, 1), data_format='channels_last')(o)
o = Conv2D(32, (3, 3), padding='valid', data_format='channels_last')(o)
o = BatchNormalization()(o)
#o = UpSampling2D((2, 2), data_format='channels_last')(o)
#o = ZeroPadding2D((1, 1), data_format='channels_last')(o)
o = Conv2D(n_classes,(3,3),padding='same',data_format='channels_last')(o)
#o = BatchNormalization()(o)
o_shape = Model(img_input,o).output_shape
#outputHeight = o_shape[2]
#outputWidth = o_shape[3]
outputHeight = o_shape[2]
outputWidth = o_shape[1]
#o = (Reshape((outputHeight*outputWidth, -1)))(o)
#o = (Permute((1,2)))(o)
o = (Activation('sigmoid'))(o)
model = Model(img_input,o)
model.outputWidth = outputWidth
model.outputHeight = outputHeight
if(pretrained_weights):
model.load_weights(pretrained_weights)
return model
error block
Traceback (most recent call last):
File "/scratch/pkasar.dbatu/training/VGGSEGNET_224_224_working_on_20_03_21_on_augmented_images_of_size_256_by_256.py", line 248, in <module>
model=VGGSegnet(n_classes=1, input_height=224, input_width=224)
File "/scratch/pkasar.dbatu/training/VGGSEGNET_224_224_working_on_20_03_21_on_augmented_images_of_size_256_by_256.py", line 56, in VGGSegnet
vgg.load_weights("image-segmentation-keras-py3-master/Models/vgg16_weights_th_dim_ordering_th_kernels.hdf5")
File "/home/pkasar.dbatu/.conda/envs/dl_new/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py", line 2234, in load_weights
hdf5_format.load_weights_from_hdf5_group(f, self.layers)
File "/home/pkasar.dbatu/.conda/envs/dl_new/lib/python3.8/site-packages/tensorflow/python/keras/saving/hdf5_format.py", line 710, in load_weights_from_hdf5_group
K.batch_set_value(weight_value_tuples)
File "/home/pkasar.dbatu/.conda/envs/dl_new/lib/python3.8/site-packages/tensorflow/python/util/dispatch.py", line 201, in wrapper
return target(*args, **kwargs)
File "/home/pkasar.dbatu/.conda/envs/dl_new/lib/python3.8/site-packages/tensorflow/python/keras/backend.py", line 3706, in batch_set_value
x.assign(np.asarray(value, dtype=dtype(x)))
File "/home/pkasar.dbatu/.conda/envs/dl_new/lib/python3.8/site-packages/tensorflow/python/distribute/values.py", line 781, in assign
return values_util.on_write_assign(
File "/home/pkasar.dbatu/.conda/envs/dl_new/lib/python3.8/site-packages/tensorflow/python/distribute/values_util.py", line 140, in on_write_assign
return var._update( # pylint: disable=protected-access
File "/home/pkasar.dbatu/.conda/envs/dl_new/lib/python3.8/site-packages/tensorflow/python/distribute/values.py", line 940, in _update
return self._update_cross_replica(update_fn, value, **kwargs)
File "/home/pkasar.dbatu/.conda/envs/dl_new/lib/python3.8/site-packages/tensorflow/python/distribute/values.py", line 893, in _update_cross_replica
return self.distribute_strategy.extended.update(
File "/home/pkasar.dbatu/.conda/envs/dl_new/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py", line 2494, in update
return self._update(var, fn, args, kwargs, group)
File "/home/pkasar.dbatu/.conda/envs/dl_new/lib/python3.8/site-packages/tensorflow/python/distribute/mirrored_strategy.py", line 710, in _update
fn(v, *distribute_utils.select_replica_mirrored(i, args),
File "/home/pkasar.dbatu/.conda/envs/dl_new/lib/python3.8/site-packages/tensorflow/python/autograph/impl/api.py", line 572, in wrapper
return func(*args, **kwargs)
File "/home/pkasar.dbatu/.conda/envs/dl_new/lib/python3.8/site-packages/tensorflow/python/distribute/values_util.py", line 139, in <lambda>
assign_fn = lambda var, *a, **kw: var.assign(*a, **kw)
File "/home/pkasar.dbatu/.conda/envs/dl_new/lib/python3.8/site-packages/tensorflow/python/ops/resource_variable_ops.py", line 888, in assign
raise ValueError(
ValueError: Cannot assign to variable block1_conv1/kernel:0 due to variable shape (3, 3, 3, 64) and value shape (3, 3, 64, 3) are incompatible
I am doing segmentation task using iou as performance metric.
Help me out. Thank you in advance