0

I have implemented a CNN with two output layers for GTSRB Dataset problem. One output layer classifies images into their respective classes and second layer predicts bounding box coordinates. In dataset, the upper left and lower right coordinate is provided for training images. We have to predict the same for the test images. How do i define the loss metric(MSE or any other) and performance metric(R-Squared or any other) for regression layer since it outputs 4 values(x and y coordinates for upper left and lower right point)? Below is the code of model.

def get_model() :
   #Input layer
   input_layer = Input(shape=(IMG_HEIGHT, IMG_WIDTH, N_CHANNELS, ), name="input_layer", dtype='float32')
   #Convolution, maxpool and dropout layers
   conv_1 = Conv2D(filters=8, kernel_size=(3,3), activation=relu, 
            kernel_initializer=he_normal(seed=54), bias_initializer=zeros(), 
            name="first_convolutional_layer") (input_layer)
   maxpool_1 = MaxPool2D(pool_size=(2,2), name = "first_maxpool_layer")(conv_1)

   #Fully connected layers
   flat = Flatten(name="flatten_layer")(maxpool_1)
   d1 = Dense(units=64, activation=relu, kernel_initializer=he_normal(seed=45),
         bias_initializer=zeros(), name="first_dense_layer", kernel_regularizer = l2(0.001))(flat)
   d2 = Dense(units=32, activation=relu, kernel_initializer=he_normal(seed=47),
         bias_initializer=zeros(), name="second_dense_layer", kernel_regularizer = l2(0.001))(d1)

   classification = Dense(units = 43, activation=None, name="classification")(d2)
   regression = Dense(units = 4, activation = 'linear', name = "regression")(d2)
   #Model
   model = Model(inputs = input_layer, outputs = [classification, regression])
   model.summary()
   return model
Hardik Vagadia
  • 355
  • 2
  • 10

1 Answers1

0

For classification output, you need to use softmax.

classification = Dense(units = 43, activation='softmax', name="classification")(d2)

You should use categorical_crossentropy loss for the classification output.

For regression, you can use mse loss.

Zabir Al Nazi
  • 10,298
  • 4
  • 33
  • 60