tf.reduce_sum и keras.backend.sum не уменьшают размерность - PullRequest
0 голосов
/ 11 марта 2019

рассмотрите следующий код

input = Input(batch_shape=(None,1))
x1 = np.random.random((6,1))    
ReduceSum = Lambda(lambda z: K.sum(z, axis=0))
output_ = ReduceSum(input)

model = Model(input, output)
model.predict(x1)

Я не понимаю, почему размерность не уменьшается. Я получил такое же поведение с tf.reduce_sum Как уменьшить размер по первой оси, как я обычно делал бы с numpy?

1 Ответ

1 голос
/ 11 марта 2019

Модели Keras не поддерживают вывод различного количества выборок из входных выборок.

Проблема не в уменьшении, а в модели.

У вас есть 6 входных выборок, модель сделает все возможное, чтобы вывести 6 выборок, несмотря ни на что. (Если это не может, это выдаст ошибку).

Чтобы проверить это правильно, вам нужно иметь 1 дополнительное измерение для ввода:

input = Input(batch_shape=(None,None,1))
x1 = np.random.random((1,6,1))    
ReduceSum = Lambda(lambda z: K.sum(z, axis=1))
output = ReduceSum(input)

model = Model(input, output)
model.predict(x1)

Теперь вы увидите сокращение.

Если вы используете его в середине модели, все сокращения будут работать правильно, если в окончательном выводе вам удастся восстановить то же количество выборок, что и для ввода.

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