Error when save 4 dimensional mat

I first create a toy mat with shape hwc=[3,3,2], then expand its dimension to nhwc=[1,3,3,2] and save it using cv::FileStorage, but I open the saved txt, found it save double size of actual number of element, i.e. it saved 18 * 2=36 elements instead of 1 * 3 * 3 * 3 * 2=18.
my code are:

    uint8_t uarr[] = {0, 20, 40, 60, 80, 100, 120, 127, 140, 160, 180, 200, 220, 240, 255, 255, 255, 255};
    int rows = 3;
    int cols = 3;
    cv::Mat src(rows, cols, CV_8UC2, uarr);
    std::cout << src << std::endl;   

    int nchw_src_size[4] = { 1, src.channels(), src.rows, src.cols};
    cv::Mat nchw_src(4, nchw_src_size, src.type(), src.data);

    cv::FileStorage fs("nchw_src.txt", cv::FileStorage::WRITE); 
    fs << "mat data" << nchw_src;
    fs.release();

This is the saved txt, you can see the last half part is not from the src mat.