Суммируйте столбцы для каждых двух последовательных строк тензора из 3 измерений - PullRequest
0 голосов
/ 28 января 2019

У меня есть тензор формы (1, 4, 3), и я хочу суммировать столбцы каждых двух последовательных строк, чтобы уменьшить форму до (1, 2, 3).

Пример:

# Input
1 2 3
3 4 5
6 7 8
9 10 11

# Output
4 6 8
15 17 19

Ответы [ 3 ]

0 голосов
/ 28 января 2019

Вы должны правильно изменить его форму и подвести итоги по вновь созданной оси:

import tensorflow as tf
tf.enable_eager_execution()

# Input
A = [[1, 2, 3],
[3, 4, 5],
[6, 7, 8],
[9, 10, 11]]

A = tf.reshape(A, [4//2, 2, 3])
A = tf.reduce_sum(A, axis=1)
A = tf.reshape(A, [4//2, 3])

print(A.numpy())

# output:
# [[ 4  6  8]
# [15 17 19]]
0 голосов
/ 28 января 2019
import tensorflow as tf 
t = tf.constant([[[1, 1, 1], [2, 2, 2],[3, 3, 3], [4, 4, 4],[5, 5, 5], [6, 6, 6],[7, 7, 7], [8, 8, 8]],
                 [[3, 3, 3], [4, 4, 4],[3, 3, 3], [4, 4, 4],[3, 3, 3], [4, 4, 4],[3, 3, 3], [4, 5, 4]]])
print(t.shape)

nt = tf.concat([tf.concat([tf.reduce_sum(tf.slice(t, [j, i, 0], [1, 2, 3]),axis=1) for i in list(range(0,8,2))],axis=0)  for j in range(2)],axis=0)

sess = tf.Session()
sess.run(nt)
(2, 8, 3)

array([[ 3,  3,  3],
       [ 7,  7,  7],
       [11, 11, 11],
       [15, 15, 15],
       [ 7,  7,  7],
       [ 7,  7,  7],
       [ 7,  7,  7],
       [ 7,  8,  7]], dtype=int32)


0 голосов
/ 28 января 2019

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

x = tf.placeholder(shape=[1, 4, 3], dtype=tf.float32)
y = tf.reduce_sum(
    tf.reshape(x, (1, 2, 2, 3)),
    axis=2
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...