(Примечание. В моем предыдущем ответе была ошибка, которая могла привести к неправильным окнам пула. С этим должно быть все в порядке.)
Вот один из возможных способов, записанных в тензорном потоке "низкого уровня".Возможно, вам придется обернуть это в слой keras (или просто использовать Lambda
), чтобы интегрировать его в вашу модель.
x = ... # input, shape batch x n_words x features
x = tf.reshape(x, [batch, 2, n_words//2, features]) # need to get these dimensions, can get them from tf.shape(x) as well
x = tf.reduce_max(x, axis=2)
Это позволит реализовать максимальное объединение;Вы также можете использовать reduce_mean
для среднего пула, например.
Это имеет одно ограничение, а именно, оно не будет работать, если n_words
нечетно.В этом случае вам, возможно, придется проверить, есть ли это, и использовать tf.pad
, чтобы добавить один элемент в ось слова, чтобы сделать его четным.