autoht_1=INPUT_VARIABLE(1);// previous cell output [bS x numProj], that is at previous time step t-1, in case of projection=false -> numProj=numUnits!!!
autoct_1=INPUT_VARIABLE(2);// previous cell state [bS x numUnits], that is at previous time step t-1
autoWx=INPUT_VARIABLE(3);// input-to-hidden weights, [inSize x 4*numUnits]
autoWh=INPUT_VARIABLE(4);// hidden-to-hidden weights, [numProj x 4*numUnits]
autoWc=INPUT_VARIABLE(5);// diagonal weights for peephole connections [3*numUnits]
autoWp=INPUT_VARIABLE(6);// projection weights [numUnits x numProj]
REQUIRE_TRUE(ht_1->isSameShape(correctHt_1Shape),0,"LSTMCELL operation: wrong shape of initial cell output, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(correctHt_1Shape).c_str(),ShapeUtils::shapeAsString(ht_1).c_str());
REQUIRE_TRUE(ct_1->isSameShape(correctCt_1Shape),0,"LSTMCELL operation: wrong shape of initial cell state, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(correctCt_1Shape).c_str(),ShapeUtils::shapeAsString(ct_1).c_str());
REQUIRE_TRUE(Wx->isSameShape(correctWxShape),0,"LSTMCELL operation: wrong shape of input-to-hidden weights, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(correctWxShape).c_str(),ShapeUtils::shapeAsString(Wx).c_str());
REQUIRE_TRUE(Wh->isSameShape(correctWhShape),0,"LSTMCELL operation: wrong shape of hidden-to-hidden weights, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(correctWhShape).c_str(),ShapeUtils::shapeAsString(Wh).c_str());
REQUIRE_TRUE(Wc->isSameShape(correctWcShape),0,"LSTMCELL operation: wrong shape of diagonal weights for peephole connections, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(correctWcShape).c_str(),ShapeUtils::shapeAsString(Wc).c_str());
REQUIRE_TRUE(Wp->isSameShape(correctWpShape),0,"LSTMCELL operation: wrong shape of projection weights, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(correctWpShape).c_str(),ShapeUtils::shapeAsString(Wp).c_str());
REQUIRE_TRUE(b->isSameShape(correctBShape),0,"LSTMCELL operation: wrong shape of biases, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(correctBShape).c_str(),ShapeUtils::shapeAsString(b).c_str());
REQUIRE_TRUE(!(!projection&&numUnits!=numProj),0,"LSTMCELL operation: projection option is switched of, and in this case output dimensionality for the projection matrices (numProj) must be equal to number of units in lstmCell !");
autoht_1ShapeInfo=inputShape->at(1);// previous cell output [bS x numProj], that is at previous time step t-1, in case of projection=false -> numProj=numUnits!!!
autoct_1ShapeInfo=inputShape->at(2);// previous cell state [bS x numUnits], that is at previous time step t-1
autoWxShapeInfo=inputShape->at(3);// input-to-hidden weights, [inSize x 4*numUnits]
autoWhShapeInfo=inputShape->at(4);// hidden-to-hidden weights, [numProj x 4*numUnits]
autoWcShapeInfo=inputShape->at(5);// diagonal weights for peephole connections [3*numUnits]
autoWpShapeInfo=inputShape->at(6);// projection weights [numUnits x numProj]
REQUIRE_TRUE(ShapeUtils::areShapesEqual(ht_1ShapeInfo,correctHt_1Shape),0,"LSTMCELL operation: wrong shape of initial cell output, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(correctHt_1Shape).c_str(),ShapeUtils::shapeAsString(ht_1ShapeInfo).c_str());
REQUIRE_TRUE(ShapeUtils::areShapesEqual(ct_1ShapeInfo,correctCt_1Shape),0,"LSTMCELL operation: wrong shape of initial cell state, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(correctCt_1Shape).c_str(),ShapeUtils::shapeAsString(ct_1ShapeInfo).c_str());
REQUIRE_TRUE(ShapeUtils::areShapesEqual(WxShapeInfo,correctWxShape),0,"LSTMCELL operation: wrong shape of input-to-hidden weights, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(correctWxShape).c_str(),ShapeUtils::shapeAsString(WxShapeInfo).c_str());
REQUIRE_TRUE(ShapeUtils::areShapesEqual(WhShapeInfo,correctWhShape),0,"LSTMCELL operation: wrong shape of hidden-to-hidden weights, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(correctWhShape).c_str(),ShapeUtils::shapeAsString(WhShapeInfo).c_str());
REQUIRE_TRUE(ShapeUtils::areShapesEqual(WcShapeInfo,correctWcShape),0,"LSTMCELL operation: wrong shape of diagonal weights for peephole connections, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(correctWcShape).c_str(),ShapeUtils::shapeAsString(WcShapeInfo).c_str());
REQUIRE_TRUE(ShapeUtils::areShapesEqual(WpShapeInfo,correctWpShape),0,"LSTMCELL operation: wrong shape of projection weights, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(correctWpShape).c_str(),ShapeUtils::shapeAsString(WpShapeInfo).c_str());
REQUIRE_TRUE(ShapeUtils::areShapesEqual(bShapeInfo,correctBShape),0,"LSTMCELL operation: wrong shape of biases, expected is %s, but got %s instead !",ShapeUtils::shapeAsString(correctBShape).c_str(),ShapeUtils::shapeAsString(bShapeInfo).c_str());