我目前正在通过 Keras CNN 对黑色素瘤图像进行分类。图像带有元数据——年龄、性别和病变位置。现在我只是使用图像,结果还可以,但我想看看如果我将元数据添加到模型会发生什么。如何将年龄、性别等数据添加到图像中?这是导出的数据框的屏幕截图 - 红色是我用于 CNN 的内容,我想添加绿色部分:如果有这样做的标准方法,如果您能分享它,我将非常感激。谢谢我试过谷歌“向 CNN 添加人口统计数据”或“向 CNN 添加性别”等,但找不到任何信息。我目前的模型结构是:model = Sequential() model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape)) model.add(MaxPool2D(pool_size=(2, 2))) model.add(BatchNormalization()) model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape)) model.add(MaxPool2D(pool_size=(2, 2))) model.add(BatchNormalization()) model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape)) model.add(BatchNormalization()) model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape)) model.add(BatchNormalization()) model.add(Conv2D(32, kernel_size=(3, 3), activation='relu')) model.add(BatchNormalization()) model.add(MaxPool2D(pool_size=(2, 2))) model.add(Conv2D(32, (3, 3), activation='relu')) model.add(BatchNormalization()) model.add(Conv2D(32, (3, 3), activation='relu')) model.add(BatchNormalization()) model.add(MaxPool2D(pool_size=(2, 2))) model.add(Flatten()) model.add(Dense(128, activation='relu')) model.add(Dropout(0.2)) model.add(Dense(64, activation='relu')) model.add(Dropout(0.2)) model.add(Dense(num_classes, activation='sigmoid')) adam = Adam(lr=0.001) model.compile(loss='binary_crossentropy', optimizer=adam, metrics=[km.binary_precision(), km.binary_recall(),km.binary_f1_score()])
1 回答
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
您所描述的实际上是一个多输入模型。在这种情况下,您可以考虑让图像输入 CNN,元数据输入全连接网络,然后合并这两个子网络的输出以获得您的预测。
查看关于它的 Keras 文档:https : //keras.io/guides/functional_api/#models-with-multiple-inputs-and-outputs
添加回答
举报
0/150
提交
取消