当前位置: 首页 > 知识库问答 >
问题:

基于keras-ResNet50模型的二元分类输出层

西门靖琪
2023-03-14

我正在尝试使用Keras ResNet50实现来训练二值图像分类模型。

我想在不使用转移学习的情况下测试模型,但当我尝试使用简单的密集层(带有sigmoid激活)来更改二元分类的输出层时,我在形状大小方面出现了错误。

我的代码是这样的:

baseModel= ResNet50(weights=None, include_top=False, classes=2, pooling=max)

output = baseModel.output
output = layers.Dense(1, activation='sigmoid')(output)

model = keras.models.Model(inputs=baseModel.input, outputs=output)

model.compile(optimizer=Adam(learning_rate=0.0001), loss='binary_crossentropy',  metrics=['accuracy'])

执行此操作时,我出现以下错误:

ValueError: logits and labels must have the same shape ((None, 7, 7, 1) vs (None, 1))

如果我在得到的致密层之前添加一个扁平层:

ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`.

我错过了什么?如何更改致密层的输入形状?

共有1个答案

史昀
2023-03-14

对于ResNet,您指定了Top=False,pooling=max,因此Resent模型向模型添加了最终的max pooling层。因此,请使用下面的代码:您不需要添加展平层,max pooling会为您展平输出。

out=basemodel.layers[-1].output 
output = layers.Dense(1, activation='sigmoid')(out)

您可以使用模型。summary()查看模型结构。此外,不应使用class=2。当top为false时,不应指定类。

 类似资料:
  • 本文向大家介绍使用Keras预训练模型ResNet50进行图像分类方式,包括了使用Keras预训练模型ResNet50进行图像分类方式的使用技巧和注意事项,需要的朋友参考一下 Keras提供了一些用ImageNet训练过的模型:Xception,VGG16,VGG19,ResNet50,InceptionV3。在使用这些模型的时候,有一个参数include_top表示是否包含模型顶部的全连接层,如

  • Keras有两种类型的模型,序贯模型(Sequential)和函数式模型(Model),函数式模型应用更为广泛,序贯模型是函数式模型的一种特殊情况。 两类模型有一些方法是相同的: model.summary():打印出模型概况,它实际调用的是keras.utils.print_summary model.get_config():返回包含模型配置信息的Python字典。模型也可以从它的config

  • Keras有两种类型的模型,顺序模型(Sequential)和泛型模型(Model) 两类模型有一些方法是相同的: model.summary():打印出模型概况 model.get_config():返回包含模型配置信息的Python字典。模型也可以从它的config信息中重构回去 config = model.get_config() model = Model.from_config(con

  • 在 Keras 中有两类主要的模型:Sequential 顺序模型 和 使用函数式 API 的 Model 类模型。 这些模型有许多共同的方法和属性: model.layers 是包含模型网络层的展平列表。 model.inputs 是模型输入张量的列表。 model.outputs 是模型输出张量的列表。 model.summary() 打印出模型概述信息。 它是 utils.print_sum

  • 问题内容: 在Keras中创建顺序模型时,我知道您在第一层中提供了输入形状。然后,此输入形状会构成 隐式 输入层吗? 例如,下面的模型明确指定了2个密集层,但这实际上是一个3层模型,即由输入形状隐含的一个输入层,一个具有32个神经元的隐藏密集层,然后一个具有10个可能输出的输出层组成的模型吗? 问题答案: 好吧,实际上它实际上 是 一个隐式输入层,即您的模型是一个具有三层“输入,隐藏和输出”的“老

  • 我一直在尝试使用Keras构建一个多输入模型。我来自使用顺序模型,并且只有一个相当直接的输入。我一直在查看StackOverflow上的留档(https://keras.io/getting-started/functional-api-guide/)和一些答案(如何在Keras 2.0中“合并”顺序模型?)。基本上,我想要的是让两个输入训练一个模型。一个输入是一段文本,另一个是从该文本中提取的一