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(expectedGradOShape==ShapeUtils::shapeAsString(gradO),0,"CUSTOM DECONV2D_TF OP: wrong shape of input array, basing on array with output shape expected is %s, but got %s instead !",expectedGradOShape.c_str(),ShapeUtils::shapeAsString(gradO).c_str());
REQUIRE_TRUE(expectedWeightsShape==ShapeUtils::shapeAsString(weights),0,"CUSTOM DECONV2D_TF OP: wrong shape of weights array, expected is %s, but got %s instead !",expectedWeightsShape.c_str(),ShapeUtils::shapeAsString(weights).c_str());
REQUIRE_TRUE(weightsShapeInfo[0]==rank,0,"CUSTOM DECONV2D_TF OP: rank of weights array must be equal to %i, but got %i instead !",rank,weightsShapeInfo[0]);
REQUIRE_TRUE(gradOShapeInfo[0]==rank,0,"CUSTOM DECONV2D_TF OP: rank of input array must be equal to %i, but got %i instead !",rank,gradOShapeInfo[0]);
REQUIRE_TRUE(gradIShapeShapeInfo[0]==1,0,"CUSTOM DECONV2D_TF OP: rank of array with output shape must be equal to %i, but got %i instead !",1,gradIShapeShapeInfo[0]);
REQUIRE_TRUE(expectedGradIShape==ShapeUtils::shapeAsString(gradIShape),0,"CUSTOM DECONV2D_TF OP: wrong shape of array with output shape, expected is %s, but got %s instead !",expectedGradIShape.c_str(),ShapeUtils::shapeAsString(gradIShape).c_str());
REQUIRE_TRUE(expectedWeightsShape==ShapeUtils::shapeAsString(weightsShapeInfo),0,"CUSTOM DECONV2D_TF OP: wrong shape of weights array, expected is %s, but got %s instead !",expectedWeightsShape.c_str(),ShapeUtils::shapeAsString(weightsShapeInfo).c_str());