Keras Tensorflow 中的切片张量

Posted

技术标签:

【中文标题】Keras Tensorflow 中的切片张量【英文标题】:Slice tensor in Keras Tensorflow 【发布时间】:2019-10-21 20:03:44 【问题描述】:

例如,我有形状为(None, 2, 100, 100, 1024) 的张量,我想将2 拆分为11,这样我就有2 个等级为4 的张量(None, 100, 100, 1024)。如何使用 Keras Tensorflow 做到这一点?

谢谢。

【问题讨论】:

【参考方案1】:

使用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]

【讨论】:

谢谢你,它工作!在我操纵每个张量的值之后,我怎样才能重塑回(None, 2, 100, 100, 1024)

以上是关于Keras Tensorflow 中的切片张量的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow 和 Keras 中的符号张量是啥?

张量相对于元素邻居的条件值

Keras:如何使用来自另一个张量的信息对张量进行切片?

如何使用 Tensorflow 张量设置 Keras 层的输入?

从keras中的扩展张量制作输入特征图

使用 [:, :, 0] 的 TF2 / Keras 切片张量