使用tf.gather切片张量时保留None维度的方法咨询
解决Tensor切片保留动态Batch维度的问题
你需要提取第6个特征(索引5)同时保留动态batch维度(None),之前的写法错误地固定了batch维度或打乱了维度顺序,导致输出形状不符合预期。
直接用切片操作就能搞定:
tensor[:, 5:6]
这种切片方式会保留原张量的batch维度,将[None,8]转换为[None,1],完美适配动态batch场景。
另外用tf.gather的话,只需加上keepdims=True参数,确保提取特征后保留原维度结构:
tf.gather(tensor, 5, axis=1, keepdims=True)
该参数会让提取后的特征维度得以保留,最终输出形状就是[None,1]。
之前写法的问题:
tf.expand_dims(...,0)是在batch维度前新增了一个固定维度,把原动态batch维度覆盖成了1,导致形状变为[1,1]tensor[None,5]先在前面新增维度(变成[1, None,8]),再提取第5个特征,最终输出[1,1],完全打乱了维度顺序
内容的提问来源于stack exchange,提问作者Jonathan Roy
相关产品推荐
相关产品推荐

