from keras import optimizers
from keras.models import load_model
from keras.preprocessing import image
import numpy as np
import scipy.misc
from keras.wrappers.scikit_learn import KerasClassifier
# dimensions of our images
img_width, img_height = 313, 220
# load the model we saved
model = load_model('hmodel.h5')
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy','mse'])
test_image= image.load_img('/Images/1.jpg',target_size = (img_width, img_height))
x= scipy.misc.imread('/Images/1.jpg').shape
print x
test_image = image.img_to_array(test_image)
test_image = np.expand_dims(test_image, axis = 0)
test_image = test_image.reshape(img_width, img_height,3)
result = model.predict(test_image)
print result
当我运行此代码时,我收到此错误:
/keras/engine/training.py“,第113行,_standardize_input_data 'with shape'+ str(data_shape))ValueError:检查时出错:期望的dense_1_input有2个维度,但得到的数组有形状 (313,220,3)。
我的第一个print
显示:(313, 220, 3)
。
如何解决此错误。
答案 0 :(得分:0)
您的第一个图层EXPLAIN
需要一个包含2个维度的输入:id: 1
select_type: SIMPLE
table: numeric_data
partitions: NULL
type: range
possible_keys: date_added,name
key: date_added
key_len: 5
ref: NULL
rows: 29222232
filtered: 0.16
Extra: Using index condition; Using where
(第一个维度与您的批量大小相对应)。
但是,您的输入Dense(150,kernel_initializer='normal', input_dim=36, activation='relu')
实际上有3个维度 - 一旦正确批处理,则为4个维度:(*, 36)
。
如果您希望x
图层接受此类输入,则可以使用参数(*, 313, 220, 3)
代替Dense
。
注: 您没有正确批量处理图像。
input_shape=(313, 220, 3)