массив numpy имеет различную форму, когда я передаю его в качестве входных данных для слоя keras - PullRequest
0 голосов
/ 06 июня 2018

У меня есть кодер keras (часть автоэнкодера), построенный следующим образом:

input_vec = Input(shape=(200,))
encoded = Dense(20, activation='relu')(input_vec)
encoder = Model(input_vec, encoded)

Я хочу создать фиктивный ввод, используя numpy.

>>> np.random.rand(200).shape
(200,)

Но если я попробуючтобы передать его в качестве ввода в кодировщик, я получаю ошибку ValueError:

>>> encoder.predict(np.random.rand(200))
>>> Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/francesco/PycharmProjects/W2VAutoencoded/venv/lib/python3.6/site-packages/keras/engine/training.py", line 1817, in predict
    check_batch_axis=False)
  File "/home/francesco/PycharmProjects/W2VAutoencoded/venv/lib/python3.6/site-packages/keras/engine/training.py", line 123, in _standardize_input_data
    str(data_shape))
ValueError: Error when checking : expected input_1 to have shape (200,) but got array with shape (1,)

Чего мне не хватает?

1 Ответ

0 голосов
/ 06 июня 2018

В то время как Keras Layers (Input, Dense и т. Д.) Принимают в качестве параметров форму (ы) для одного образца, Model.predict() принимает в качестве входных пакетных данных (то есть образцы, сложенные в 1-м измерении),

Сейчас ваша модель считает, что вы передаете ей партию из 200 образцов формы (1,).

Это будет работать:

batch_size = 1
encoder.predict(np.random.rand(batch_size, 200))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...