Fixed bug in tf.pad shape logic that made it more restrictive than necessary by inter...
authorA. Unique TensorFlower <gardener@tensorflow.org>
Thu, 17 May 2018 15:52:36 +0000 (08:52 -0700)
committerTensorFlower Gardener <gardener@tensorflow.org>
Thu, 17 May 2018 15:55:08 +0000 (08:55 -0700)
PiperOrigin-RevId: 196998883

tensorflow/python/kernel_tests/pad_op_test.py
tensorflow/python/ops/array_ops.py

index 3618534..944de21 100644 (file)
@@ -317,6 +317,11 @@ class PadOpTest(test.TestCase):
                            [constant_op.constant(1, shape=[2]), [0, unknown]])
     self.assertEqual([6, None], padded.get_shape().as_list())
 
+    # Zero padding on a known dimension.
+    inp = array_ops.placeholder(dtypes.int32, [None, None, 20])
+    padded = array_ops.pad(inp, [[0, 0], [0, unknown], [0, 0]])
+    self.assertEqual([None, None, 20], padded.get_shape().as_list())
+
   def testScalars(self):
     paddings = np.zeros((0, 2), dtype=np.int32)
     inp = np.asarray(7)
index 96df156..3c4946a 100644 (file)
@@ -1897,7 +1897,7 @@ def pad(tensor, paddings, mode="CONSTANT", name=None, constant_values=0):  # pyl
         and paddings_constant is not None):
       new_shape = []
       for padding, dim in zip(paddings_constant, input_shape.as_list()):
-        if padding is None or dim is None or not all(padding):
+        if padding is None or dim is None or any((x is None for x in padding)):
           new_shape.append(None)
         else:
           new_shape.append(sum(padding) + dim)