为了账号安全,请及时绑定邮箱和手机立即绑定

我应该如何定义这个 CNN 的损失和性能指标?

我应该如何定义这个 CNN 的损失和性能指标?

慕无忌1623718 2022-11-18 18:21:50
我已经为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损失。


查看完整回答
反对 回复 2022-11-18
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信