input_image = Input(shape=(128, 128, 3))
x1 = Conv2D(32, (7, 7), padding = 'valid', activation='relu')(input_image)
x1 = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True, beta_initializer='zeros', gamma_initializer='ones', moving_mean_initializer='zeros', moving_variance_initializer='ones', beta_regularizer=None, gamma_regularizer=None, beta_constraint=None, gamma_constraint=None)(x1)
x1 = Conv2D(64, (7, 7), padding = 'valid', activation='relu')(x1)
x1 = tf.keras.layers.ZeroPadding2D(padding=(8, 8))(x1)
x1 = AveragePooling2D((2, 2))(x1)
x1 = Conv2D(128, (7, 7), padding = 'valid', activation='relu')(x1)
#x1 = Conv2D(64, (3, 3), padding = 'same', activation='relu')(x1)
#x1 = Dropout(.5)(x1)
#x1 = Conv2D(128, (7, 7), padding = 'same', activation='relu')(x1)
##x1 = Conv2D(128, (3, 3), padding = 'same', activation='relu')(x1)
x2 = Conv2D(32, (5, 5), padding = 'valid',activation='relu')(input_image)
x2 = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True, beta_initializer='zeros',
gamma_initializer='ones', moving_mean_initializer='zeros', moving_variance_initializer='ones',
beta_regularizer=None, gamma_regularizer=None, beta_constraint=None, gamma_constraint=None)(x2)
#x2 = Conv2D(32, (5, 5),padding = 'same',activation='relu')(x2)
#x2 = AveragePooling2D((2, 2))(x2)
#x2 = Conv2D(64, (5, 5), padding = 'same',activation='relu')(x2)
x2 = Conv2D(64, (5, 5), padding = 'valid',activation='relu')(x2)
x2 = tf.keras.layers.ZeroPadding2D(padding=(4, 4))(x2)
x2 = AveragePooling2D((2, 2))(x2)
x2 = Dropout(.5)(x2)
x2 = Conv2D(128, (5, 5), padding = 'valid',activation='relu')(x2)
#x2 = Conv2D(128, (5, 5), padding = 'same',activation='relu')(x2)'''
x3 = Conv2D(32, (3, 3), padding = 'valid',activation='relu')(input_image)
x3 = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True, beta_initializer='zeros',
gamma_initializer='ones', moving_mean_initializer='zeros', moving_variance_initializer='ones',
beta_regularizer=None, gamma_regularizer=None, beta_constraint=None, gamma_constraint=None)(x3)
#x3 = Conv2D(32, (3, 3), padding = 'same',activation='relu')(x3)
#x3 = AveragePooling2D((2, 2))(x3)
#x3 = Conv2D(64, (3, 3), padding = 'same',activation='relu')(x3)
x3 = Conv2D(64, (3, 3), padding = 'valid',activation='relu')(x3)
x3 = Dropout(.5)(x3)
x3 = AveragePooling2D((2, 2))(x3)
x3 = Conv2D(128, (3, 3), padding = 'valid',activation='relu')(x3)
#x3 = Conv2D(128, (3, 3), padding = 'same',activation='relu')(x3)
x = Concatenate()([x1, x2, x3])
x = Reshape((-1, 128))(x)
x4 = Capsule(32, 8, 3, True)(x)
x5 = Capsule(32, 8, 3, True)(x4)
x = Concatenate()([x4, x5])
capsule = Capsule(3, 16, 3, True)(x)
output = Lambda(lambda z: K.sqrt(K.sum(K.square(z), 2)))(capsule)
mask_input= Input(shape=(num_classes, ))
mask = Mask()([capsule, mask_input]) # two inputs
dec = Dense(512, activation= tf.keras.layers.LeakyReLU(alpha=0.2))(mask)
dec = Dense(1024, activation= tf.keras.layers.LeakyReLU(alpha=0.2))(dec)
#dec = Dense(2048, activation='relu')(dec)
#dec = Dense(4096, activation='sigmoid')(dec)
dec = Dense(1281283, activation='sigmoid')(dec)
dec = Reshape(target_shape=[128, 128, 3])(dec)
catagorical = tf.keras.losses.CategoricalCrossentropy(
from_logits=False, label_smoothing=0,
name='categorical_crossentropy'
)
catagorical1 = tf.keras.losses.SparseCategoricalCrossentropy(
from_logits=False,
name='sparse_categorical_crossentropy'
)
model = Model(inputs=[input_image,mask_input], outputs=[output,dec])
adam = optimizers.Adam(lr=0.001)
#model.compile(loss=[margin_loss, 'mse'], loss_weights=[1., 0.5], optimizer=adam, metrics=[{'output':'accuracy'},{'dec': tf.keras.metrics.Accuracy()}])
model.compile(loss=[margin_loss, pose_loss], loss_weights=[1., 0.6], optimizer=adam, metrics=[{'output':'accuracy'},{'dec': tf.keras.metrics.Accuracy()}])
model.summary()
Below is the error:
ValueError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_14300/3254215252.py in
50
51 x = Reshape((-1, 128))(x)
---> 52 x4 = Capsule(32, 8, 3, True)(x)
53 x5 = Capsule(32, 8, 3, True)(x4)
54 x = Concatenate()([x4, x5])
c:\users\hp\appdata\local\programs\python\python38\lib\site-packages\keras\utils\traceback_utils.py in error_handler(*args, **kwargs)
65 except Exception as e: # pylint: disable=broad-except
66 filtered_tb = _process_traceback_frames(e.traceback)
---> 67 raise e.with_traceback(filtered_tb) from None
68 finally:
69 del filtered_tb
c:\users\hp\appdata\local\programs\python\python38\lib\site-packages\tensorflow\python\autograph\impl\api.py in wrapper(*args, **kwargs)
697 except Exception as e: # pylint:disable=broad-except
698 if hasattr(e, 'ag_error_metadata'):
--> 699 raise e.ag_error_metadata.to_exception(e)
700 else:
701 raise
ValueError: Exception encountered when calling layer "capsule_4" (type Capsule).
in user code:
File "C:\Users\HP\AppData\Local\Temp/ipykernel_14300/2362004159.py", line 70, in call *
o = self.activation(caps_batch_dot(c, hat_inputs))
File "C:\Users\HP\AppData\Local\Temp/ipykernel_14300/320000566.py", line 6, in caps_batch_dot *
o = tf.matmul(x, y)
ValueError: Dimensions must be equal, but are 10800 and 8 for '{{node capsule_4/MatMul}} = BatchMatMulV2[T=DT_FLOAT, adj_x=false, adj_y=false](capsule_4/ExpandDims, capsule_4/transpose_1)' with input shapes: [?,32,1,10800], [?,32,8,10800].
Call arguments received:
• inputs=tf.Tensor(shape=(None, 10800, 128), dtype=float32)
input_image = Input(shape=(128, 128, 3))
x1 = Conv2D(32, (7, 7), padding = 'valid', activation='relu')(input_image)
x1 = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True, beta_initializer='zeros', gamma_initializer='ones', moving_mean_initializer='zeros', moving_variance_initializer='ones', beta_regularizer=None, gamma_regularizer=None, beta_constraint=None, gamma_constraint=None)(x1)
x1 = Conv2D(64, (7, 7), padding = 'valid', activation='relu')(x1)
x1 = tf.keras.layers.ZeroPadding2D(padding=(8, 8))(x1)
x1 = AveragePooling2D((2, 2))(x1)
x1 = Conv2D(128, (7, 7), padding = 'valid', activation='relu')(x1)
#x1 = Conv2D(64, (3, 3), padding = 'same', activation='relu')(x1)
#x1 = Dropout(.5)(x1)
#x1 = Conv2D(128, (7, 7), padding = 'same', activation='relu')(x1)
##x1 = Conv2D(128, (3, 3), padding = 'same', activation='relu')(x1)
x2 = Conv2D(32, (5, 5), padding = 'valid',activation='relu')(input_image)
x2 = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True, beta_initializer='zeros',
gamma_initializer='ones', moving_mean_initializer='zeros', moving_variance_initializer='ones',
beta_regularizer=None, gamma_regularizer=None, beta_constraint=None, gamma_constraint=None)(x2)
#x2 = Conv2D(32, (5, 5),padding = 'same',activation='relu')(x2)
#x2 = AveragePooling2D((2, 2))(x2)
#x2 = Conv2D(64, (5, 5), padding = 'same',activation='relu')(x2)
x2 = Conv2D(64, (5, 5), padding = 'valid',activation='relu')(x2)
x2 = tf.keras.layers.ZeroPadding2D(padding=(4, 4))(x2)
x2 = AveragePooling2D((2, 2))(x2)
x2 = Dropout(.5)(x2)
x2 = Conv2D(128, (5, 5), padding = 'valid',activation='relu')(x2)
#x2 = Conv2D(128, (5, 5), padding = 'same',activation='relu')(x2)'''
x3 = Conv2D(32, (3, 3), padding = 'valid',activation='relu')(input_image)
x3 = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True, beta_initializer='zeros',
gamma_initializer='ones', moving_mean_initializer='zeros', moving_variance_initializer='ones',
beta_regularizer=None, gamma_regularizer=None, beta_constraint=None, gamma_constraint=None)(x3)
#x3 = Conv2D(32, (3, 3), padding = 'same',activation='relu')(x3)
#x3 = AveragePooling2D((2, 2))(x3)
#x3 = Conv2D(64, (3, 3), padding = 'same',activation='relu')(x3)
x3 = Conv2D(64, (3, 3), padding = 'valid',activation='relu')(x3)
x3 = Dropout(.5)(x3)
x3 = AveragePooling2D((2, 2))(x3)
x3 = Conv2D(128, (3, 3), padding = 'valid',activation='relu')(x3)
#x3 = Conv2D(128, (3, 3), padding = 'same',activation='relu')(x3)
x = Concatenate()([x1, x2, x3])
x = Reshape((-1, 128))(x)
x4 = Capsule(32, 8, 3, True)(x)
x5 = Capsule(32, 8, 3, True)(x4)
x = Concatenate()([x4, x5])
capsule = Capsule(3, 16, 3, True)(x)
output = Lambda(lambda z: K.sqrt(K.sum(K.square(z), 2)))(capsule)
mask_input= Input(shape=(num_classes, ))
mask = Mask()([capsule, mask_input]) # two inputs
dec = Dense(512, activation= tf.keras.layers.LeakyReLU(alpha=0.2))(mask)
dec = Dense(1024, activation= tf.keras.layers.LeakyReLU(alpha=0.2))(dec)
#dec = Dense(2048, activation='relu')(dec)
#dec = Dense(4096, activation='sigmoid')(dec)
dec = Dense(1281283, activation='sigmoid')(dec)
dec = Reshape(target_shape=[128, 128, 3])(dec)
catagorical = tf.keras.losses.CategoricalCrossentropy(
from_logits=False, label_smoothing=0,
name='categorical_crossentropy'
)
catagorical1 = tf.keras.losses.SparseCategoricalCrossentropy(
from_logits=False,
name='sparse_categorical_crossentropy'
)
model = Model(inputs=[input_image,mask_input], outputs=[output,dec])
adam = optimizers.Adam(lr=0.001)
#model.compile(loss=[margin_loss, 'mse'], loss_weights=[1., 0.5], optimizer=adam, metrics=[{'output':'accuracy'},{'dec': tf.keras.metrics.Accuracy()}])
model.compile(loss=[margin_loss, pose_loss], loss_weights=[1., 0.6], optimizer=adam, metrics=[{'output':'accuracy'},{'dec': tf.keras.metrics.Accuracy()}])
model.summary()
Below is the error:
ValueError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_14300/3254215252.py in
50
51 x = Reshape((-1, 128))(x)
---> 52 x4 = Capsule(32, 8, 3, True)(x)
53 x5 = Capsule(32, 8, 3, True)(x4)
54 x = Concatenate()([x4, x5])
c:\users\hp\appdata\local\programs\python\python38\lib\site-packages\keras\utils\traceback_utils.py in error_handler(*args, **kwargs)
65 except Exception as e: # pylint: disable=broad-except
66 filtered_tb = _process_traceback_frames(e.traceback)
---> 67 raise e.with_traceback(filtered_tb) from None
68 finally:
69 del filtered_tb
c:\users\hp\appdata\local\programs\python\python38\lib\site-packages\tensorflow\python\autograph\impl\api.py in wrapper(*args, **kwargs)
697 except Exception as e: # pylint:disable=broad-except
698 if hasattr(e, 'ag_error_metadata'):
--> 699 raise e.ag_error_metadata.to_exception(e)
700 else:
701 raise
ValueError: Exception encountered when calling layer "capsule_4" (type Capsule).
in user code:
Call arguments received:
• inputs=tf.Tensor(shape=(None, 10800, 128), dtype=float32)