REQUIRE_TRUE(h0->isSameShape(h0CorrectShape),0,"GRU operation: wrong shape of previous cell output array, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(h0CorrectShape).c_str(),ShapeUtils::shapeAsString(h0).c_str());
REQUIRE_TRUE(Wx->isSameShape(wxCorrectShape),0,"GRU operation: wrong shape of input-to-hidden weights array, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(wxCorrectShape).c_str(),ShapeUtils::shapeAsString(Wx).c_str());
REQUIRE_TRUE(Wh->isSameShape(whCorrectShape),0,"GRU operation: wrong shape of hidden-to-hidden weights array, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(whCorrectShape).c_str(),ShapeUtils::shapeAsString(Wh).c_str());
REQUIRE_TRUE(b->isSameShape(bCorrectShape),0,"GRU operation: wrong shape of biases array, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(bCorrectShape).c_str(),ShapeUtils::shapeAsString(b).c_str());
REQUIRE_TRUE(ShapeUtils::areShapesEqual(h0ShapeInfo,h0CorrectShape),0,"GRU operation: wrong shape of previous cell output array, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(h0CorrectShape).c_str(),ShapeUtils::shapeAsString(h0ShapeInfo).c_str());
REQUIRE_TRUE(ShapeUtils::areShapesEqual(WxShapeInfo,wxCorrectShape),0,"GRU operation: wrong shape of input-to-hidden weights array, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(wxCorrectShape).c_str(),ShapeUtils::shapeAsString(WxShapeInfo).c_str());
REQUIRE_TRUE(ShapeUtils::areShapesEqual(WhShapeInfo,whCorrectShape),0,"GRU operation: wrong shape of hidden-to-hidden weights array, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(whCorrectShape).c_str(),ShapeUtils::shapeAsString(WhShapeInfo).c_str());
REQUIRE_TRUE(ShapeUtils::areShapesEqual(bShapeInfo,bCorrectShape),0,"GRU operation: wrong shape of biases array, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(bCorrectShape).c_str(),ShapeUtils::shapeAsString(bShapeInfo).c_str());