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

输入0与层flatten_5不兼容:预期min_ndim=3,发现ndim=2

范嘉
2023-03-14

我正在尝试微调VGG16神经网络,下面是代码:

vgg16_model = VGG16(weights="imagenet", include_top="false", input_shape=(224,224,3))
model = Sequential()
model.add(vgg16_model)
#add fully connected layer:
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(3, activation='softmax')) 

我得到这个错误:

ValueError Traceback(最近一次调用上次)位于

2型号。添加(vgg16\U型号)

3#添加完全连接的层:

----

5型号。添加(密集(256,激活='relu'))

6型号。添加(辍学(0.5))

/usr/local/anaconda/lib/python3.6/site-packages/keras/engine/sequential.py添加(自身,层)179self.inputs=network.get_source_inputs(self.outputs[0])

180 elif self。输出:

--

182如果是实例(output_tensor,列表):

183引发TypeError('序列模型中的所有层'

/usr/local/anaconda/lib/python3.6/site-packages/keras/engine/base\u层。呼叫中的py(自我,输入,**kwargs)

412#在输入不兼容的情况下引发异常

413#使用层构造函数中指定的input_spec。

--

415

416#收集输入形状以构建层。

/usr/local/anaconda/lib/python3.6/site-packages/keras/engine/base\u层。assert\u input\u兼容性中的py(self,inputs)

325self.name':预期min_ndim='

326 str(spec.min_ndim)',找到ndim='

--

328#检查dtype。

329如果spec.dtype不是无:

ValueError:输入0与layer flatten\u 5不兼容:预期最小ndim=3,发现ndim=2

我尝试了许多建议的解决方案,但没有一个能解决我的问题。我该如何解决这个问题?

共有1个答案

锺玺
2023-03-14

在官方keras网页,上

在一组新类上微调InceptionV3

from keras.models import Model
vgg16_model = VGG16(weights="imagenet", include_top="false", input_shape=(224,224,3))
x = vgg16_model.output
x=Flatten()(x)
x=Dense(256, activation='relu')(x)
x=Dropout(0.5)(x)
predictions=Dense(3, activation='softmax')(x)

model = Model(inputs=base_model.input, outputs=predictions)

您在include\u top=“false”中有一个错误,这将导致出现错误消息。尝试:

vgg16_model = VGG16(weights="imagenet", include_top=False, input_shape=(224,224,3))
 类似资料:
  • 问题内容: 我已经检查了所有解决方案,但仍然遇到相同的错误。我的训练图像形状是,我相信它是4维的,但是我不知道为什么错误显示它是5维的。 所以这就是我的定义 问题答案: 问题是。 它实际上应该仅包含3个维度。内部keras将添加批次尺寸使其成为4。 由于您可能使用了4维(包括批处理),因此keras将添加5维。 您应该使用。

  • 我有一个在MNIST上训练过的模型,但当我放入一个手工制作的图像样本时,它会引发值错误:层序列的输入0与层不兼容:输入形状的轴-1预期值为784,但收到了形状的输入(无,1) 我已经检查了模型的输入,它与MNIST的形状相同。x\U列车【0】。形状(784,)和我的图像arr.shape(784,)请帮助! 。。。 ValueError:layer sequential的输入0与层不兼容:输入形状

  • 完全错误: 问题 我一直在努力建立一个神经网络,因为它不断抱怨收到的形状。x\u trian和y\u train的形状都是(20,)但当我将其输入为input\u形状时,它表示希望输入形状的值为20,但实际上收到了(None,1)。 我不明白(无,1)来自哪里,因为当我打印x_train和y_train的形状时,它给了我(20,)。它们都是数字数组。 代码 我试过的 然后我把input_shape

  • 我试图基于GTSRB数据集(下面给出的链接)制作一个CNN模型,但我面临以下错误: 当我设置input\u shape=input\u shape=(3,IMG\u SIZE,IMG\u SIZE)时,我得到以下错误: ValueError:检查输入时出错:预期conv2d\u 34\u输入有4个维度,但得到了具有形状的数组(9030,1) 当我研究这个问题时,我发现一个解决方案可能是将batch

  • 问题内容: 我是新手。 我在下面编写了程序,以允许用户输入名称。 我运行了程序并输入了 尼克松的* 名字 * 为什么总是输出? 问题答案: func(* Reader)ReadString ReadString读取直到输入中第一次出现delim为止,并返回一个字符串,其中包含直到定界符(包括定界符)的数据。 终端输入包括尾随换行符。例如, 输出(Linux): 输出(Windows): 修剪尾随换

  • 我有一个包含记录计数器的固定长度流 记录以开头 字符16+9(人形)包含 字符25+9(人形)包含 用填充并向右对齐的所有数字 记录在1898位置以+结尾(记录为长2000个字符) 我的出口代码有什么问题?为什么我总是得零分?