Specify ImageSize in each Graphics using the (still undocumented) syntax ImageSize -> 1 -> size (which makes 1 unit in user units correspond to size points in rendered image) :
GraphicsGrid[Partition[Graphics[#, ImageSize -> 1 -> 50] & /@ exp1, 10]]

Compare with
GraphicsGrid[Partition[Graphics[#, ImageSize -> 50] & /@ exp1, 10]]

Using with symbolic sizes:
Table[Labeled[GraphicsGrid[
Partition[Graphics[#, ImageSize -> is] & /@ exp1, 10]],
Style[ImageSize -> is, 24], Top],
{is, {5/3 -> Tiny, 3 -> Small, 6 -> Medium, 6 -> Automatic, 9.5 -> Large}}] //
Column[#, Dividers -> All] &

Use the 1st and 8th parts of exp1 to compare the results of two ways of specifying image size. Note how the spec ImageSize -> 1 -> size modifies the actual image size so that an object with a length of 1 user unit rendered as size pixels long:
Row[Labeled[#, Column[{"ImageDimensions:", ImageDimensions @ #}, Center], Top] & @
Graphics[#, ImageSize -> 1 -> 200] & /@ exp1[[{1, 8}]]]

versus
Row[Labeled[#, Column[{"ImageDimensions:", ImageDimensions @ #}, Center], Top] & @
Graphics[#, ImageSize -> 200] & /@ exp1[[{1, 8}]]]

Shape[x_]butxis not used any where in the function? – Nasser Feb 05 '22 at 15:40Partitionis discarding the last element of theTable. To retain that element useGraphicsGrid[{Graphics /@ exp1}]If the discard is intentional, additionally change the upper bound on theTableto9– Bob Hanlon Feb 05 '22 at 16:04