我正在尝试根据从某些图像中提取的特征来训练模型,模型可以很好地训练,但是当我尝试使用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,)
答案 0 :(得分:0)
那是因为您的模型需要一个样本数组,但是您一次要给它一个样本。
因此,它将样本中的每个特征都视为形状为(1,)
的单个样本,这对它没有意义,因为您大概有7个特征,因此它期望形状为(7,)
的样本
您可以只做model.predict(np.array(test_set))
。
答案 1 :(得分:-1)
尝试
dataPrediction = model.predict(np.expand_dims(i,axis=0))