Сокращение матрицы путем суммирования фиксированного количества строк вместе в Tensorflow - PullRequest
0 голосов
/ 24 апреля 2018

У меня огромная матрица с несколькими строками.На самом деле, я хочу добавить каждые 3 строки вместе, чтобы сформировать новую матрицу.

Чтобы лучше понять проблему, вот пример, иллюстрирующий желаемый результат:

input  = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]]
output = [[9, 12], [27, 30]]

Я хочу использоватьвстроенные операции тензорного потока для обеспечения дифференцируемости графа.

1 Ответ

0 голосов
/ 24 апреля 2018

Вы можете изменить свой тензор, чтобы выделить триплеты в новом измерении, затем tf.reduce_sum по этому измерению:

import tensorflow as tf

x = tf.constant([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]])
shape_x = tf.shape(x)

# Reshaping the tensor to have triplets on dimension #1:
new_shape_for_reduce = tf.stack([shape_x[0] // 3, 3, shape_x[1]])
reshaped_x = tf.reshape(x, new_shape_for_reduce)
# Sum-reducing over dimension #1:
sum_3_rows = tf.reduce_sum(reshaped_x, axis=1)

with tf.Session() as sess:
    res = sess.run(sum_3_rows)
    print(res)
    # [[9  12]
    #  [27 30]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...