python - 期望 volvo2d_input_1 有 4 个维度,但得到形状为 (150, 150, 1) 的数组

标签 python machine-learning deep-learning keras conv-neural-network

我使用大小为 150x150 的灰度图像训练了 CNN,并且训练没有任何错误,但是,每当我尝试运行 model.predict() 函数时,我都会收到此错误:

预期 convolution2d_input_1 有 4 个维度,但得到的数组形状为 (150, 150, 1)

尽管我对传递给预测函数的图像进行了与用于训练 CNN 的图像完全相同的预处理。它们的大小为 150x150x1,就像我在 CNN 中的输入形状以及我用来训练 CNN 的图像的形状一样。

这是我的 CNN:

model = Sequential()
model.add(Conv2D(32, 3, 3, input_shape=(150, 150, 1), activation = 
'relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(32, 3, 3, activation = 'relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, 3, 3, activation = 'relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())  
model.add(Dense(64, activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation = 'softmax'))

输入的大小为 150x150x1,我的 CNN 表示它需要的预期输入是 (None, 150, 150, 1)

我已经尝试解决这个问题好几天了,但没有任何运气。

最佳答案

如果您尝试对单个图像进行预测,您应该添加一个维度,然后进行如下预测:

import numpy as np
img = np.expand_dims(img, axis=0)
prediction = model.predict(img)

关于python - 期望 volvo2d_input_1 有 4 个维度,但得到形状为 (150, 150, 1) 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47889999/

相关文章:

python - 无法在 TensorFlow 中共享/重命名变量

python - 无法抓取页面的同一部分,唯一的区别是 div 和 span

Python:多进程工作人员,跟踪已完成的任务(缺少完成)

machine-learning - 是否可以通过 API 将自定义模型导入到 WDS 中?

swift - 用于对象搜索的 CoreML

python - 在文本 block 中添加换行,但不要打断单词

python - 如何在 tensorflow 中获得特定值和形状的张量?

keras - pytorch 中的 keras.layers.Masking 相当于什么?

neural-network - 端到端训练 CNN-LSTM?

machine-learning - Tensorflow 在文本生成期间更改 RNN 的批量大小