diff --git a/src/operator/Clip.cpp b/src/operator/Clip.cpp
index 1b4b261246fbf1b86b8a3414fee5a7ebb66b6bef..336673e1e399634572e4957ce1dc34d24a597ff5 100644
--- a/src/operator/Clip.cpp
+++ b/src/operator/Clip.cpp
@@ -52,7 +52,7 @@ bool Clip_Op::dimsForwarded() const {
 
 bool Clip_Op::forwardDims(bool allowDataDependency)
 {
-    if (getInput(1))
+    if (getInput(1) && getInput(1)->size() > 0)
     {
         std::shared_ptr<Tensor> fallback;
         const auto& minTensor = mInputs[1]->refCastFrom(fallback, DataType::Float32, "cpu");
@@ -63,7 +63,7 @@ bool Clip_Op::forwardDims(bool allowDataDependency)
 
         this->min() = minValue;
     }
-    if (getInput(2))
+    if (getInput(2) && getInput(2)->size() > 0)
     {
         std::shared_ptr<Tensor> fallback;
         const auto& maxTensor = mInputs[2]->refCastFrom(fallback, DataType::Float32, "cpu");
@@ -77,8 +77,8 @@ bool Clip_Op::forwardDims(bool allowDataDependency)
 
     if (!inputsAssociated(false)) 
         return false;
-    else if ((getInput(1) && !getInput(1)->empty()) || (getInput(2) && !getInput(2)->empty()))
-        AIDGE_THROW_OR_ABORT(std::runtime_error, "Expected Input#1 and Input#2 to be scalar (Tensors of empty shapes)");
+    else if ((getInput(1) && getInput(1)->size() > 1) || (getInput(2) && getInput(2)->size() > 1))
+        AIDGE_THROW_OR_ABORT(std::runtime_error, "Expected Input#1 and Input#2 to be scalar (Tensors of empty shapes or of size one)");
 
     mOutputs[0]->resize(getInput(0)->dims());