Несоответствие между ожидаемым размером партии и размером выходной партии модели - PullRequest
1 голос
/ 22 февраля 2020

Обозначает ли функциональный API keras, что количество пакетных элементов в выходных данных моделей равно количеству элементов в их входных данных? Например, приведенный ниже код вызывает исключение: ValueError: Mismatch between expected batch size and model output batch size. Output shape = (1, 1), expected output shape = shape (2, 1):

d = 2
input_ = Input(shape=(d, ))
output_ = keras.layers.Lambda(lambda x: tf.reduce_sum(x, keepdims=True))(input_)
model = keras.Model(name='model', inputs=input_, outputs=output_)

Если установить keepdims в значение false, возникает другое исключение: ValueError: zero-dimensional arrays cannot be concatenated, что имеет смысл, поскольку модель ожидает пакет элементов, каждый из которых является двумерным массивом.

1 Ответ

0 голосов
/ 25 марта 2020

Функциональный API Tensorflow Keras не обязательно означает, что количество пакетных элементов в выходных данных модели равно количеству элементов в их входных данных.
Tensorflow обрабатывает это, оставляя индекс От 0 формы вывода до Нет , для него должно быть batch_size agnosti c.

Но в этом случае при печати model.summary() Вы можете заметить, что форма вывода последнего слоя установлена ​​на (1,1), а не (None,1). Что будет работать нормально, если вы будете только подавать данные с batch_size = 1, но вызовет ошибку , когда поданные данные имеют batch_size != 1.

Более конкретно : Mismatch between expected batch size and model output batch size. Output shape = (1, 1), expected output shape = shape (BATCH_SIZE, 1).

Ожидаемая выходная форма (BATCH_SIZE,1) - это выходная форма ваших данных .
Форма вывода (1, 1) - форма вывода модели .

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