我已经为GTSRB数据集问题实现了一个带有两个输出层的 CNN 。一个输出层将图像分类为各自的类别,第二层预测边界框坐标。在数据集中,为训练图像提供了左上和右下坐标。我们必须对测试图像进行相同的预测。我如何为回归层定义损失指标(MSE 或任何其他)和性能指标(R 平方或任何其他),因为它输出 4 个值(左上点和右下点的 x 和 y 坐标)?下面是模型的代码。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
1 回答
大话西游666
TA贡献1817条经验 获得超14个赞
对于分类输出,需要使用softmax。
classification = Dense(units = 43, activation='softmax', name="classification")(d2)
您应该将categorical_crossentropy
损失用于分类输出。
对于回归,您可以使用mse
损失。
添加回答
举报
0/150
提交
取消