Тензор среза в Керасе Tensorflow - PullRequest
1 голос
/ 06 июня 2019

Например, у меня есть тензор с формой (None, 2, 100, 100, 1024), и я хочу разделить 2 на 1 и 1, чтобы у меня было 2 тензора с рангом 4 (None, 100, 100, 1024). Как я могу сделать это, используя Keras Tensorflow?

Спасибо.

1 Ответ

1 голос
/ 06 июня 2019

Использование tf.split():

import tensorflow as tf

tensor = tf.placeholder(tf.float32, (None, 2, 100, 100, 1024))
splitted = [tf.squeeze(t, axis=1) for t in tf.split(tensor, 2, axis=1)]
print(splitted[0].get_shape().as_list(), splitted[1].get_shape().as_list())
# [None, 100, 100, 1024] [None, 100, 100, 1024]

Чтобы объединить обратно:

# manipulate here ...
splitted = [t[:, None, ...] for t in splitted]
res = tf.concat(splitted, axis=1)
print(res.get_shape().as_list()) # [None, 2, 100, 100, 1024]
...