Ошибка при проверке входных данных: ожидается, что dens_85_input будет иметь форму (6,), но получил массив с формой (1,) - PullRequest
0 голосов
/ 28 апреля 2020

Я получил обученные модели сети keras. К сожалению, я не могу использовать функцию прогнозирования на них. Создание моделей:

def create_model(self, item_id):
    self.model = Sequential()

    n_cols = self.train_X.shape[1]

    self.model.add(Dense(64, activation='relu', input_shape=(n_cols,)))
    self.model.add(Dense(32, activation='relu'))
    self.model.add(Dense(32, activation='sigmoid'))
    self.model.add(Dense(64, activation='sigmoid'))
    self.model.add(Dense(64, activation='sigmoid'))
    self.model.add(Dense(2, activation='softmax'))

    self.model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

    early_stopping_monitor = EarlyStopping(patience=3)
    self.model.fit(self.train_X, self.train_Y, validation_split=0.2, epochs=30, callbacks=[early_stopping_monitor])

    self.save_model(item_id)

Функция прогнозирования выглядит следующим образом

def valuate_criteria(self, item_id):
    if self.models[item_id] is not None:
        test_y_predictions = self.models[item_id].predict(self.test_X.to_numpy().shape[1])
        if test_y_predictions[0][1] >= 0.75:
            return True
        return False

Данные, которые я передаю, это фрейм данных, который выглядит следующим образом

     age  destination  sex  transport  criterion  weather
0    2    23           1    29         1          1

Я использую тот же формат данных для обучения и для прогнозирования. Я получил эту ошибку:

Error when checking input: expected dense_43_input to have shape (6,) but got array with shape (1,)

Заранее спасибо. Я потерян в этом уже 3 дня.

train_df: этот элемент равен 0 или 1, это то, что я пытаюсь предсказать

     age  destination  sex  transport  criterion  weather  item
0    2    23           1    29         1          1         0

Так я получаю данные обучения из предыдущего кадра данных

self.train_X = self.train_df.drop(columns=['item'])
self.train_Y = to_categorical(self.train_df[['item']])

Создание и обучение работают модули, проблема в том, что я использую функцию прогнозирования с данными в self.test_X, а именно:

     age  destination  sex  transport  criterion  weather
0    2    23           1    29         1          1

ОБНОВЛЕНИЕ: Я нашел решение, используя этот вопрос Тензор не является элементом этого графика ; развертывание модели Keras

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