REQUIRE_TRUE(weights->rankOf()==rank,0,"CUSTOM DECONV2D_TF OP: rank of weights array must be equal to 4, but got %i instead !",weights->rankOf());
REQUIRE_TRUE(gradIShape->rankOf()==1,0,"CUSTOM DECONV2D_TF OP: rank of array with output shape must be equal to 1, but got %i instead !",gradIShape->rankOf());
REQUIRE_TRUE(gradIShape->lengthOf()==rank,0,"CUSTOM DECONV2D_TF OP: length of array with output shape must be equal to 4, but got %i instead !",gradIShape->lengthOf());
REQUIRE_TRUE(gradO->isSameShape(expectedGradOShape),0,"CUSTOM DECONV2D_TF OP: wrong shape of input array, basing on array with output shape expected is %s, but got %s instead !",ShapeUtils::shapeAsString(expectedGradOShape).c_str(),ShapeUtils::shapeAsString(gradO).c_str());
REQUIRE_TRUE(weights->isSameShape(expectedWeightsShape),0,"CUSTOM DECONV2D_TF OP: wrong shape of weights array, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(expectedWeightsShape).c_str(),ShapeUtils::shapeAsString(weights).c_str());
REQUIRE_TRUE(shape::rank(weightsShapeInfo)==rank,0,"CUSTOM DECONV2D_TF OP: rank of weights array must be equal to %i, but got %i instead !",rank,shape::rank(weightsShapeInfo));
REQUIRE_TRUE(shape::rank(gradOShapeInfo)==rank,0,"CUSTOM DECONV2D_TF OP: rank of input array must be equal to %i, but got %i instead !",rank,shape::rank(gradOShapeInfo));
REQUIRE_TRUE(shape::rank(gradIShapeShapeInfo)==1,0,"CUSTOM DECONV2D_TF OP: rank of array with output shape must be equal to %i, but got %i instead !",1,shape::rank(gradIShapeShapeInfo));
REQUIRE_TRUE(expectedGradIShape==gradIShape,0,"CUSTOM DECONV2D_TF OP: wrong shape of array with output shape, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(expectedGradIShape).c_str(),ShapeUtils::shapeAsString(gradIShape).c_str());
REQUIRE_TRUE(shape::shapeEquals(4,expectedWeightsShape.data(),shape::rank(weightsShapeInfo),shape::shapeOf(weightsShapeInfo)),0,"CUSTOM DECONV2D_TF OP: wrong shape of weights array, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(expectedWeightsShape).c_str(),ShapeUtils::shapeAsString(weightsShapeInfo).c_str());