Skip to content

Commit eef5b36

Browse files
Merge pull request #51975 from yongtang:51936-max_pool3d
PiperOrigin-RevId: 401245519 Change-Id: I67d2cbb0e21729b94186ca9bf82450ff93132ff2
1 parent dd68305 commit eef5b36

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

tensorflow/core/kernels/pooling_ops_3d.cc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,11 @@ class Pooling3DOp : public UnaryOp<T> {
141141
OP_REQUIRES(context, ksize_.size() == 5,
142142
errors::InvalidArgument("Sliding window ksize field must "
143143
"specify 5 dimensions"));
144+
bool non_negative =
145+
std::all_of(ksize_.begin(), ksize_.end(), [](int k) { return k > 0; });
146+
OP_REQUIRES(context, non_negative,
147+
errors::InvalidArgument("Sliding window ksize field must "
148+
"have non-negative dimensions"));
144149
OP_REQUIRES_OK(context, context->GetAttr("strides", &stride_));
145150
OP_REQUIRES(context, stride_.size() == 5,
146151
errors::InvalidArgument("Sliding window stride field must "

tensorflow/python/kernel_tests/pooling_ops_3d_test.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,19 @@ def testAvgPoolGradSamePadding3_1_3d(self):
510510
strides=(1, 1, 1),
511511
padding="SAME")
512512

513+
def testMaxPool3DZeroPoolSize(self):
514+
# Test case for GitHub issue 51936.
515+
for f in [nn_ops.max_pool3d, nn_ops.avg_pool3d]:
516+
with self.session():
517+
with self.assertRaises((errors.InvalidArgumentError, ValueError)):
518+
input_sizes = [3, 4, 10, 11, 12]
519+
520+
input_data = 1.
521+
input_tensor = constant_op.constant(
522+
input_data, shape=input_sizes, name="input")
523+
pool_3d = f(input_tensor, ksize=[2, 2, 0], strides=1, padding="VALID")
524+
self.evaluate(pool_3d)
525+
513526

514527
def testMaxPoolGradEagerShapeErrors(self):
515528
with context.eager_mode():

0 commit comments

Comments
 (0)