Ожидается, что плотность_пользователя будет иметь форму (7,), но получен массив с формой (1,) - PullRequest
1 голос
/ 25 апреля 2019

Я пытаюсь обучить модель на функциях, которые я извлек из некоторых изображений, модель тренируется нормально, но когда я пробую модель.прогнозировать, это дает мне эту ошибку. msgstr "ожидается, что плотность_производителя будет иметь форму (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,) все же это дает мне ошибку Ошибка при проверке входных данных: ожидалось, что dens_input будет иметь форму (7,), но получил массив с формой (1,)

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

попробуй

dataPrediction = model.predict(np.expand_dims(i,axis=0))
0 голосов
/ 25 апреля 2019

Это потому, что ваша модель ожидает массив выборок, но вы даете ей по одной выборке за раз.

Поэтому он рассматривал каждый элемент в вашем образце как отдельный образец формы (1,), что для него не имело смысла, поскольку у вас предположительно было 7 объектов, и поэтому он ожидал образец формы (7,).

Вы можете просто сделать model.predict(np.array(test_set)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...