预期density_input具有形状(7,),但具有形状(1,)的数组

时间:2019-04-25 07:50:48

标签: python tensorflow keras

我正在尝试根据从某些图像中提取的特征来训练模型,模型可以很好地训练,但是当我尝试使用model.predict时,会出现此错误。 “预期densed_input的形状为(7,),但数组的形状为(1,)” 我知道有关输入形状的知识,但是错误很奇怪。现在,我试图打印要提供给model.predict的输入内容的形状及其效果。

import numpy as np

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation

trainX = np.array(train_set)

trainY = np.array(train_labels)

model = Sequential()

model.add(Dense(8, input_dim=7, activation='relu'))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(trainX, trainY, nb_epoch=1200, batch_size=2, verbose=2)
model.save('my_model.h5') 

for i in np.array(test_set):
    print(i.shape)
    dataPrediction = model.predict(i)
    print (dataPrediction, '<--- Predicted number')
    print (test_labels[i],' <-- Correct answer \n')

print(i.shape)给我(7,) 却给我错误 检查输入时出错:预期density_input的形状为(7,),但数组的形状为(1,)

2 个答案:

答案 0 :(得分:0)

那是因为您的模型需要一个样本数组,但是您一次要给它一个样本。

因此,它将样本中的每个特征都视为形状为(1,)的单个样本,这对它没有意义,因为您大概有7个特征,因此它期望形状为(7,)的样本

您可以只做model.predict(np.array(test_set))

答案 1 :(得分:-1)

尝试

dataPrediction = model.predict(np.expand_dims(i,axis=0))