
    |j2                       d dl mZ d dlmZmZmZ er"d dlmZ d dlm	Z	 d dl
mZ ddlmZmZ ed         Zd dlZd dlZd dlZd d	lmZ d dlZd d
lmZ d dlmZ g Z G d deed                            Z G d de          ZdS )    )annotations)TYPE_CHECKINGAnyLiteralN)_DTypeLiteral)
_Transform   )_ImageBackend_ImageDataTypetraintest)Image)_check_exists_and_download)Datasetc                      e Zd ZU dZdZdZedz   ZdZedz   ZdZ	edz   Z
d	Zed
z   ZdZded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   	 	 	 	 	 	 d*d+d"Zd,d$Zd-d(Zd.d)ZdS )/MNISTaX
  
    Implementation of `MNIST <http://yann.lecun.com/exdb/mnist/>`_ dataset.

    Args:
        image_path (str|None, optional): Path to image file, can be set None if
            :attr:`download` is True. Default: None, default data path: ~/.cache/paddle/dataset/mnist.
        label_path (str|None, optional): Path to label file, can be set None if
            :attr:`download` is True. Default: None, default data path: ~/.cache/paddle/dataset/mnist.
        mode (str, optional): Either train or test mode. Default 'train'.
        transform (Callable|None, optional): Transform to perform on image, None for no transform. Default: None.
        download (bool, optional): Download dataset automatically if
            :attr:`image_path` :attr:`label_path` is not set. Default: True.
        backend (str|None, optional): Specifies which type of image to be returned:
            PIL.Image or numpy.ndarray. Should be one of {'pil', 'cv2'}.
            If this option is not set, will get backend from :ref:`paddle.vision.get_image_backend <api_paddle_vision_get_image_backend>`,
            default backend is 'pil'. Default: None.

    Returns:
        :ref:`api_paddle_io_Dataset`. An instance of MNIST dataset.

    Examples:

        .. code-block:: python

            >>> import itertools
            >>> import paddle.vision.transforms as T
            >>> from paddle.vision.datasets import MNIST


            >>> mnist = MNIST()
            >>> print(len(mnist))
            60000

            >>> for i in range(5):  # only show first 5 images
            ...     img, label = mnist[i]
            ...     # do something with img and label
            ...     print(type(img), img.size, label)
            ...     # <class 'PIL.Image.Image'> (28, 28) [5]


            >>> transform = T.Compose(
            ...     [
            ...         T.ToTensor(),
            ...         T.Normalize(
            ...             mean=[127.5],
            ...             std=[127.5],
            ...         ),
            ...     ]
            ... )

            >>> mnist_test = MNIST(
            ...     mode="test",
            ...     transform=transform,  # apply transform to every image
            ...     backend="cv2",  # use OpenCV as image transform backend
            ... )
            >>> print(len(mnist_test))
            10000

            >>> for img, label in itertools.islice(iter(mnist_test), 5):  # only show first 5 images
            ...     # do something with img and label
            ...     print(type(img), img.shape, label)  # type: ignore
            ...     # <class 'paddle.Tensor'> [1, 28, 28] [7]
    mnistz$https://dataset.bj.bcebos.com/mnist/t10k-images-idx3-ubyte.gz 9fb629c4189551a2d022fa330f9573f3t10k-labels-idx1-ubyte.gz ec29112dd5afa0611ce80d1b7f02629ctrain-images-idx3-ubyte.gz f68b3c2dcbeaaa9fbdd348bbdeb94873train-labels-idx1-ubyte.gz d53e105ee54ea40749a09fcbcd1e9432_DatasetModemode
str | None
image_path
label_path_Transform[Any, Any] | None	transformr
   backendr   dtypelistlabelsimagesNr   Tdownloadbool_ImageBackend | NonereturnNonec                   |                                 dv sJ d|             |t          j                                        }|dvrt	          d|           || _        |                                 | _        || _        | j        Q|s
J d            |dk    r| j        n| j	        }|dk    r| j
        n| j        }t          |||| j        |          | _        || _        | j        [|s
J d            | j        dk    r| j        n| j        }	| j        dk    r| j        n| j        }
t          ||	|
| j        |          | _        || _        |                                  t          j                    | _        d S )Nr   z*mode should be 'train' or 'test', but got )pilcv2z4Expected backend are one of ['pil', 'cv2'], but got z?image_path is not set and downloading automatically is disabledr   z?label_path is not set and downloading automatically is disabled)lowerpaddlevisionget_image_backend
ValueErrorr$   r   r    TRAIN_IMAGE_URLTEST_IMAGE_URLTRAIN_IMAGE_MD5TEST_IMAGE_MD5r   NAMEr!   TRAIN_LABEL_URLTEST_LABEL_URLTRAIN_LABEL_MD5TEST_LABEL_MD5r#   _parse_datasetget_default_dtyper%   )selfr    r!   r   r#   r)   r$   	image_url	image_md5	label_url	label_md5s              l/lsinfo/ai/hellotax_ai/data_center/backend/venv/lib/python3.11/site-packages/paddle/vision/datasets/mnist.py__init__zMNIST.__init__~   s    zz||  
 
 
 
 ?>>
 
 

 ?m5577G.((PwPP   JJLL	$?"  Q 8 )-$$T=P  )-$$T=P  9Iy$)X DO %?"  Q 8
 9'' $$(  9'' $$( 
 9Iy$)X DO # 	-//


    d   c           	        g | _         g | _        t          j        | j        d          5 }|                                }t          j        | j        d          5 }|                                }d}d}d}t          j        |||          \  }	}
}}|t          j	        |          z  }d}d}t          j        |||          \  }}|t          j	        |          z  }	 ||k    rn:dt          |          z   dz   }t          j        |||          }|t          j	        |          z  }||z  }dt          ||z  |z            z   dz   }t          j        |||          }t          j        ||||z  f                              d          }|t          j	        |          z  }t          |          D ]l}| j                             ||d d f                    | j                            t          j        ||         g                              d	                     mB	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nrbr   z>IIIIz>IIT>Bfloat32int64)r(   r'   gzipGzipFiler    readr!   structunpack_fromcalcsizestrnpreshapeastyperangeappendarray)rA   buffer_size
image_fileimg_buf
label_filelab_buf
step_label
offset_imgmagic_byte_img	magic_img	image_numrowscols
offset_labmagic_byte_lab	magic_lab	label_num	fmt_labelr'   
fmt_imagesimages_tempr(   is                          rF   r?   zMNIST._parse_dataset   s   ]4?D11 -	Z oo''Gt55 +$//++

 ")393E"GZ4 40	9dD fon===

!&'-'9"GZ( ($	9 fon===
!Y.. #c+&6&6 6 <I#/	7JOOF&/)"<"<<J+-J!$s;+=+D'E'E!E!KJ"("4"GZ# #K  Z#k4$;%? fY''  &/*"="==J";//  **6!QQQ$<888**HfQi[1188AA   '1+ + + + + + + + + + + + + + +-	 -	 -	 -	 -	 -	 -	 -	 -	 -	 -	 -	 -	 -	 -	 -	 -	 -	s6   /IGH)I)H-	-I0H-	1IIIidxint,tuple[_ImageDataType, npt.NDArray[np.int64]]c                   | j         |         | j        |         }}t          j        |ddg          }| j        dk    r)t          j        |                    d          d          }| j        |                     |          }| j        dk    r||                    d          fS |                    | j	                  |                    d          fS )N   r/   uint8L)r   rO   )
r(   r'   rW   rX   r$   r   	fromarrayrY   r#   r%   )rA   rq   imagelabels       rF   __getitem__zMNIST.__getitem__   s     {3'S)9u
52r(++<5  OELL$9$9DDDE>%NN5))E<5  %,,w////||DJ''g)>)>>>rH   c                *    t          | j                  S )N)lenr'   )rA   s    rF   __len__zMNIST.__len__  s    4;rH   )NNr   NTN)r    r   r!   r   r   r   r#   r"   r)   r*   r$   r+   r,   r-   )rI   )rq   rr   r,   rs   )r,   rr   )__name__
__module____qualname____doc__r:   
URL_PREFIXr7   r9   r<   r>   r6   r8   r;   r=   __annotations__rG   r?   r{   r~    rH   rF   r   r   )   s2        > >@ D7J"==N7N"==N7N #??O8O #??O8O****LLLLLL "&!%$15(,>0 >0 >0 >0 >0@0 0 0 0d? ? ? ?"           rH   r   )r   znpt.NDArray[np.int64]c                  R    e Zd ZdZdZdZedz   ZdZedz   ZdZ	edz   Z
d	Zed
z   ZdZdS )FashionMNISTa
  
    Implementation of `Fashion-MNIST <https://github.com/zalandoresearch/fashion-mnist>`_ dataset.

    Args:
        image_path (str, optional): Path to image file, can be set None if
            :attr:`download` is True. Default: None, default data path: ~/.cache/paddle/dataset/fashion-mnist.
        label_path (str, optional): Path to label file, can be set None if
            :attr:`download` is True. Default: None, default data path: ~/.cache/paddle/dataset/fashion-mnist.
        mode (str, optional): Either train or test mode. Default 'train'.
        transform (Callable, optional): Transform to perform on image, None for no transform. Default: None.
        download (bool, optional): Whether to download dataset automatically if
            :attr:`image_path` :attr:`label_path` is not set. Default: True.
        backend (str, optional): Specifies which type of image to be returned:
            PIL.Image or numpy.ndarray. Should be one of {'pil', 'cv2'}.
            If this option is not set, will get backend from :ref:`paddle.vision.get_image_backend <api_paddle_vision_get_image_backend>`,
            default backend is 'pil'. Default: None.

    Returns:
        :ref:`api_paddle_io_Dataset`. An instance of FashionMNIST dataset.

    Examples:

        .. code-block:: python

            >>> import itertools
            >>> import paddle.vision.transforms as T
            >>> from paddle.vision.datasets import FashionMNIST


            >>> fashion_mnist = FashionMNIST()
            >>> print(len(fashion_mnist))
            60000

            >>> for i in range(5):  # only show first 5 images
            ...     img, label = fashion_mnist[i]
            ...     # do something with img and label
            ...     print(type(img), img.size, label)
            ...     # <class 'PIL.Image.Image'> (28, 28) [9]


            >>> transform = T.Compose(
            ...     [
            ...         T.ToTensor(),
            ...         T.Normalize(
            ...             mean=[127.5],
            ...             std=[127.5],
            ...         ),
            ...     ]
            ... )

            >>> fashion_mnist_test = FashionMNIST(
            ...     mode="test",
            ...     transform=transform,  # apply transform to every image
            ...     backend="cv2",  # use OpenCV as image transform backend
            ... )
            >>> print(len(fashion_mnist_test))
            10000

            >>> for img, label in itertools.islice(iter(fashion_mnist_test), 5):  # only show first 5 images
            ...     # do something with img and label
            ...     print(type(img), img.shape, label)  # type: ignore
            ...     # <class 'paddle.Tensor'> [1, 28, 28] [9]
    zfashion-mnistz,https://dataset.bj.bcebos.com/fashion_mnist/r    bef4ecab320f06d8554ea6380940ec79r    bb300cfdad3c16e7a12a480ee83cd310r    8d4fb7e6c68d591d4c3dfef9ec88bf0dr    25c81989df183df01b3e8a0aad5dffbeN)r   r   r   r   r:   r   r7   r9   r<   r>   r6   r8   r;   r=   r   rH   rF   r   r     se        > >@ D?J"==N7N"==N7N #??O8O #??O8OOOrH   r   )
__future__r   typingr   r   r   numpy.typingnptpaddle._typing.dtype_liker   #paddle.vision.transforms.transformsr   ry   r
   r   r   rP   rS   numpyrW   PILr   r2   paddle.dataset.commonr   	paddle.ior   __all__tupler   r   r   rH   rF   <module>r      su   # " " " " " . . . . . . . . . . ,777777>>>>>>55555555?+L              < < < < < <      
Y  Y  Y  Y  Y GECDE Y  Y  Y xJ9 J9 J9 J9 J95 J9 J9 J9 J9 J9rH   