我正在使用TensorFlow重构一个名为'Deep Voxel Flow':https://github.com/liuziwei7/voxel-flow的CNN模型。
模型的输出是一个张量,其形状为[16,256,256,3](16是批处理大小,256是要素图的大小,3是通道数)。当我尝试从4D张量提取前2个通道时('flow = deconv4 [:,:,:: 0:2]'),但出现错误:'TypeError:'Conv2dLayer'对象不可下标'。< / p>
deconv4 = Conv2d(deconv3_bn_relu, 3, [5, 5], act=tf.tanh, padding='SAME',
W_init=w_init, name='deconv4')
flow = deconv4[:, :, :, 0:2]
预期结果是“流”是一个4D张量,形状为[16,256,256,2]。
答案 0 :(得分:0)
您应该将卷积层替换为Conv2D
,该卷积层将返回张量:
deconv4 = tf.layers.conv2d(deconv3_bn_relu, 3, [5, 5], activation=tf.tanh,
padding='SAME', kernel_initializer=w_init,
name='deconv4')
然后,您不能使用[]
直接访问Tensorflow操作的结果。
但是您可以使用其他操作来重塑/修改/分割/截断张量等。
就您而言,我认为您正在寻找的可能是:
flow = tf.slice(deconv4, [0,0,0,0], [16, 256, 256, 2])