Getting below InvalidArgumentError: Graph execution error: Detected at node 'mean_squared_error/SquaredDifference' while calling retinanet.fit function.
Node: 'mean_squared_error/SquaredDifference' required broadcastable shapes [[{{node mean_squared_error/SquaredDifference}}]] [Op:__inference_train_function_44676]
Model architecture:
from keras.layers import Input
input_tensor = Input(shape=(960, 540, 3))
backbone = ResNet152(weights='imagenet', include_top=False, input_tensor=input_tensor)
final_layer_output = backbone.layers\[-1\].output
print(final_layer_output)
c5 = backbone.get_layer('conv5_block3_out').output
c4 = backbone.get_layer('conv4_block36_out').output
c3 = backbone.get_layer('conv3_block8_out').output
p5 = Conv2D(256, kernel_size=1, strides=1, padding='same')(c5)
p4 = Add()(\[UpSampling2D(size=(2, 2))(p5), Conv2D(256, kernel_size=1, strides=1, padding='same')(c4)\])
p3 = Add()(\[UpSampling2D(size=(2, 2))(p4), Conv2D(256, kernel_size=1, strides=1, padding='same')(c3)\])
p6 = Conv2D(256, kernel_size=3, strides=2, padding='same')(c5)
p7 = Activation('relu')(BatchNormalization()(Conv2D(256, kernel_size=3, strides=2, padding='same')(p6)))
def create_classification_subnet(inputs, num_classes):
x = inputs
for i in range(4):
x = Conv2D(256, kernel_size=3, strides=1, padding='same', activation='relu')(x)
outputs = Conv2D(1, kernel_size=3, strides=1, padding='same')(x)
outputs = Reshape((-1, 1))(outputs)
outputs = Activation('sigmoid')(outputs)
print(outputs.shape)
return outputs
def create_regression_subnet(inputs, num_coordinates):
x = inputs
for i in range(4):
x = Conv2D(256, kernel_size=3, strides=1, padding='same', activation='relu')(x)
outputs = Conv2D(4, kernel_size=3, strides=1, padding='same')(x)
outputs = Reshape((-1, 4))(outputs)
print(outputs.shape)
return outputs
num_anchors = 9
num_classes = 1 # Update with the number of classes in your classification labels
num_coordinates = 4 # Update with the number of coordinates in your regression labels
classification_outputs = []
regression_outputs = []
for feature_map in [p3, p4, p5, p6, p7]:
subnet = create_classification_subnet(feature_map, num_classes)
classification_outputs.append(subnet)
subnet = create_regression_subnet(feature_map, num_coordinates)
regression_outputs.append(subnet)
classification = Concatenate(axis=1, name='classification')(classification_outputs)
regression = Concatenate(axis=1, name='regression')(regression_outputs)
inputs = backbone.input
outputs = [classification, regression]
retinanet = Model(inputs=inputs, outputs=outputs)
classification = Concatenate(axis=1, name='classification')(classification_outputs)
regression = Concatenate(axis=1, name='regression')(regression_outputs)
inputs = backbone.input
outputs = \[classification, regression\]
retinanet = Model(inputs=inputs, outputs=outputs)
retinanet.fit(
train_generator,
epochs=10,
steps_per_epoch=len(train_generator),
verbose=1
)`
Unable to resolve this error. Please help.
I want to monitor training loss for the model.`
