keras:期望dense_1_input有2个维度

时间:2018-05-03 11:59:24

标签: python keras

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)

如何解决此错误。

1 个答案:

答案 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)