如何向带有146个输出层的回归CNN模型输入数据?
基于ResNet50的多坐标预测CNN模型搭建
我搭建了一个以ResNet50为骨干网络的CNN模型,专门用于预测146组(x, y)坐标——模型的全连接部分包含146个独立输出层,每个层单独负责一组坐标的预测。
模型核心代码
inputs = Input(input_shape) backbone = ResNet50(include_top=False, weights="imagenet", input_tensor=inputs) for layer in backbone.layers: if isinstance(layer, BatchNormalization): layer.trainable = True else: layer.trainable = False x = backbone.output x = Flatten()(x) x = Dropout(0.2)(x) outputs = [Dense(2, activation="sigmoid", name="l"+str(i))(x) for i in range(1, 147)] model = tf.keras.Model(inputs, outputs)
关键实现细节
- 骨干网络采用预训练的ResNet50,仅将BatchNormalization层设为可训练,其余层冻结,以此复用ImageNet上学习到的通用视觉特征
- 在全连接层前加入丢弃率为0.2的Dropout层,用于抑制模型过拟合
- 146个独立的Dense输出层均使用sigmoid激活函数,输出归一化后的(x, y)坐标值
内容的提问来源于stack exchange,提问作者Mayuresh Gawai
相关产品推荐
相关产品推荐

