Python keras:预计密集1_输入具有2维 来自keras导入优化器的 从keras.models导入负载_模型 从keras.preprocessing导入图像 将numpy作为np导入 导入scipy.misc 从keras.wrappers.scikit_学习导入KerasClassifier #我们形象的维度 img_宽度,img_高度=313220 #加载我们保存的模型 模型=负荷\模型('hmodel.h5') sgd=optimizers.sgd(lr=0.01,衰减=1e-6,动量=0.9,nesterov=True) compile(loss='classifical_crossentropy',optimizer=sgd,metrics=['accurity','mse']) test_image=image.load_img('/Images/1.jpg',target_size=(img_宽度,img_高度)) x=scipy.misc.imread('/Images/1.jpg').shape 打印x test_image=image.img_到_数组(test_image) 测试图像=np。展开图像(测试图像,轴=0) 测试图像=测试图像。重塑(图像宽度,图像高度,3) 结果=模型预测(测试图像) 打印结果

Python keras:预计密集1_输入具有2维 来自keras导入优化器的 从keras.models导入负载_模型 从keras.preprocessing导入图像 将numpy作为np导入 导入scipy.misc 从keras.wrappers.scikit_学习导入KerasClassifier #我们形象的维度 img_宽度,img_高度=313220 #加载我们保存的模型 模型=负荷\模型('hmodel.h5') sgd=optimizers.sgd(lr=0.01,衰减=1e-6,动量=0.9,nesterov=True) compile(loss='classifical_crossentropy',optimizer=sgd,metrics=['accurity','mse']) test_image=image.load_img('/Images/1.jpg',target_size=(img_宽度,img_高度)) x=scipy.misc.imread('/Images/1.jpg').shape 打印x test_image=image.img_到_数组(test_image) 测试图像=np。展开图像(测试图像,轴=0) 测试图像=测试图像。重塑(图像宽度,图像高度,3) 结果=模型预测(测试图像) 打印结果,python,keras,Python,Keras,运行此代码时,出现以下错误: /keras/engine/training.py”,第113行,输入数据 “with shape”+str(data_shape))ValueError:检查时出错:预期密集_1_输入有2个维度,但得到了带有形状的数组 (3132203) 我的第一次打印显示:(313220,3) 如何修复此错误。您的第一层稠密(150,内核初始化器='normal',输入\u dim=36,激活='relu')需要具有两个维度的输入:(*,36)(第一个维度对应于您的批量大小)

运行此代码时,出现以下错误:

/keras/engine/training.py”,第113行,输入数据
“with shape”+str(data_shape))ValueError:检查时出错:预期密集_1_输入有2个维度,但得到了带有形状的数组 (3132203)

我的第一次
打印
显示:
(313220,3)


如何修复此错误。

您的第一层
稠密(150,内核初始化器='normal',输入\u dim=36,激活='relu')
需要具有两个维度的输入:
(*,36)
(第一个维度对应于您的批量大小)

但是,您的输入
x
实际上有3个维度—正确批处理后有4个维度:
(*,313,220,3)

如果希望一个
密集的
层接受这样的输入,可以使用参数
input\u shape=(313、220、3)
而不是
input\u dim=36


备注: 您没有正确批处理图像

test\u image=image.load\u img('/Images/1.jpg',target\u size=(img\u width,img\u height))
test_image=image.img_to_数组(test_image)#shape=(313,220,3)
test_image=np.展开_dims(test_image,axis=0)#shape=(1313,220,3)
#删除下面的这条线,因为它会将形状恢复为(313、220、3)
#测试图像=测试图像。重塑(图像宽度,图像高度,3)
结果=模型预测(测试图像)

model的输入形状是什么?添加更多信息,如模型定义,可能有助于回答您的问题。如果您没有模型代码,能否显示
model.summary()
model.add(密集型(150,kernel\u initializer='normal',input\u dim=36,activation='relu'))model.add(密集型(36,kernel_initializer='uniform',activation='sigmoid'))model.add(densite(5,activation='sigmoid')ValueError:检查时出错:预期densite_1_输入有两个维度,但得到了形状为(1313220,3)的数组。您是否应用了我答案的第一部分,即使用
input_shape=(313220,3)重新定义您的第一个
densite
而不是
input\u dim=36
作为参数(
model.add(稠密(150,内核初始化器='normal',input\u shape=(313,220,3),activation='relu'))
)对不起,我不能这样做,因为:1-我不会只有一张图像,我必须预测太多图像(不同大小).2-my model由GridSearchCv定义。如果所有图像都具有相同的形状(例如,
(313、220、3)
),或者如果您以前可以调整它们的大小,则此代码将起作用。否则,事情会变得更复杂(例如,请参阅本讨论:)。