Ввод массива NP в нейронную сеть приводит к ошибке формы - PullRequest
1 голос
/ 25 февраля 2020

У меня есть фиктивный массив np:

model_input = np.array(range(10))

, который я пытаюсь передать через фиктивную нейронную сеть:

model = Sequential()
model.add(Dense(units = 50, input_shape = model_input.shape, activation = 'relu'))
model.add(Dense(units = 50, activation = 'relu'))
model.add(Dense(3))
model.compile(loss = 'mse', optimizer = Adam(lr = 0.01), metrics = ['accuracy'])

Однако, когда я run

model.predict(model_input)

Я получаю сообщение об ошибке:

Ошибка при проверке: ожидается, что dens_300_input имеет форму (10,), но получил массив с формой (1,)

Это не имеет особого смысла для меня, так как я сказал нейронной сети, что форма ввода равна форме массива, который я в нее помещаю, и не вносил в него никаких изменений перед запуском функция прогнозирования. Я чувствую, что здесь неправильно понимаю что-то фундаментальное, но не уверен, что это такое.

Мой импорт:

import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import Adam

1 Ответ

1 голос
/ 26 февраля 2020

Keras ожидает, что входные данные будут иметь размерность пакета. Ваш размер пакета может быть 1, но входные массивы все еще должны иметь размер пакета, например, такой:

model_input = np.array([model_input])

или один из нескольких вариантов, таких как

model_input = np.expand_dims(model_input, axis=0)
model_input = model_input[None,:]

Выход

array([[0.759178  , 0.40589622, 2.0082092 ]], dtype=float32)
...