【问题标题】:How to slice a tensor with 'None' dimension?如何切片具有“无”维度的张量?
【发布时间】:2019-02-13 15:45:18
【问题描述】:

我只是用TensorFlow实现一个叫DVF的CNN模型:https://github.com/liuziwei7/voxel-flow

模型的输出是'deconv4',形状为[batch_size, 256, 256,3],然后我需要使用命令提取光流:'flow = tf.slice(deconv4.outputs, [0, 0,0,0], [batch_size, 256, 256, 2])'。

但是,如果 'batch_size' 是 'None',我如何切片 'flow' 张量?

提前致谢。

'deconv4'的形状是[?,256,256,3],我想从'deconv4'中得到形状为[?,256,256,2]的'flow'。

deconv4 = Conv2d(deconv3_bn_relu, 3, [5, 5], act=tf.tanh, padding='SAME', W_init=w_init, name='deconv4')

    #################### Calculate Voxel Flow based on the 'deconv4' ############################
    flow = tf.slice(deconv4.outputs, [0,0,0,0], [batch_size, 256, 256, 2])

“流”的形状应该是 [?, 256,256,2]。但我不知道如何获得它。

【问题讨论】:

  • 对于您想要动态的任何维度,您可以使用None
  • @ARAT 感谢您的帮助。我尝试在 'tf.slice' 中使用 'None',但我注意到我不能直接将 'batch_size' 替换为 'None',否则会返回错误。你对此有什么想法吗?

标签: python tensorflow


【解决方案1】:

您应该可以用None 替换您的batch_size,这样就可以了。

或者,这:tf.shape(x)[0] 将为您提供一个具有批量大小的变量张量。

【讨论】:

  • 非常感谢您的帮助!问题已解决。我还有一个问题:'deconv4.outputs' 的形状是 [16,256,256,3],当我使用 'tf.shape(deconv4.outputs)[0]' 时,为什么结果是:'Tensor("FRUC_DVF_g /strided_slice_1:0", shape=(), dtype=int32, device=/device:GPU:0)', 不是 '16' ??谢谢!
猜你喜欢
  • 2019-08-12
  • 2018-02-24
  • 2020-03-11
  • 2018-04-12
  • 2022-01-05
  • 1970-01-01
  • 2016-05-02
  • 1970-01-01
  • 2016-03-08
相关资源
最近更新 更多