
    ёi'                    *   S SK Jr  S SKrS SKrS SKJrJrJr  S SKr	S SK
Jr  S SKJr  S SKrS SKJr  S SKJr  \(       a  S SK
Jr  S SKJr  S SKJr  S	S
KJrJr  \S   r/ rSr\S-   rSr\S-   rSr SSSSS.r! " S S\\"S      5      r# " S S\#5      r$g)    )annotationsN)TYPE_CHECKINGAnyLiteral)Image)_check_exists_and_download)Dataset)_DTypeLiteral)
_Transform   )_ImageBackend_ImageDataTypetraintestz$https://dataset.bj.bcebos.com/cifar/zcifar-10-python.tar.gz c58f30108f718f92721af3b95e74349azcifar-100-python.tar.gz eb9058c3a382ffc7106e4002c42a8d85
data_batch
test_batchr   r   )train10test10train100test100c                      \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   S\S'        S           SS jjrS rS rSS jr	S r
Srg)Cifar106   am	  
Implementation of `Cifar-10 <https://www.cs.toronto.edu/~kriz/cifar.html>`_
dataset, which has 10 categories.

Args:
    data_file (str|None, optional): Path to data file, can be set None if
        :attr:`download` is True. Default None, default data path: ~/.cache/paddle/dataset/cifar
    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:`data_file` is None. 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 Cifar10 dataset.

Examples:

    .. code-block:: python

        >>> # doctest: +TIMEOUT(60)
        >>> import itertools
        >>> import paddle.vision.transforms as T
        >>> from paddle.vision.datasets import Cifar10

        >>> cifar10 = Cifar10()
        >>> print(len(cifar10))
        50000

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


        >>> transform = T.Compose(
        ...     [
        ...         T.Resize(64),
        ...         T.ToTensor(),
        ...         T.Normalize(
        ...             mean=[0.5, 0.5, 0.5],
        ...             std=[0.5, 0.5, 0.5],
        ...             to_rgb=True,
        ...         ),
        ...     ]
        ... )
        >>> cifar10_test = Cifar10(
        ...     mode="test",
        ...     transform=transform,  # apply transform to every image
        ...     backend="cv2",  # use OpenCV as image transform backend
        ... )
        >>> print(len(cifar10_test))
        10000

        >>> for img, label in itertools.islice(iter(cifar10_test), 5):  # only show first 5 images
        ...     # do something with img and label
        ...     print(type(img), img.shape, label)  # type: ignore
        ...     # <class 'paddle.Tensor'> [3, 64, 64] 3

_DatasetModemoder   backend
str | None	data_file_Transform[Any, Any] | None	transformr
   dtypeNc                   UR                  5       S;   d
   SU 35       eUR                  5       U l        Uc  [        R                  R	                  5       nUS;  a  [        SU 35      eXPl        U R                  5         Xl        U R                  c5  U(       d   S5       e[        XR                  U R                  SU5      U l        X0l        U R                  5         [        R                  " 5       U l        g )Nr   z2mode.lower() should be 'train' or 'test', but got )pilcv2z4Expected backend are one of ['pil', 'cv2'], but got z>data_file is not set and downloading automatically is disabledcifar)lowerr   paddlevisionget_image_backend
ValueErrorr   _init_url_md5_flagr!   r   data_urldata_md5r#   
_load_dataget_default_dtyper$   )selfr!   r   r#   downloadr   s         \/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/vision/datasets/cifar.py__init__Cifar10.__init__}   s     zz|  
 
 	G @vF	G 
 JJL	?mm557G.(FwiP  !">>! P8 8==$--(DN # 	--/
    c                f    [         U l        [        U l        [        U R
                  S-      U l        g )N10)CIFAR10_URLr/   CIFAR10_MD5r0   MODE_FLAG_MAPr   flagr3   s    r5   r.   Cifar10._init_url_md5_flag   s%    ##!$))d"23	r8   c           	       ^  / T l         [        R                  " T R                  SS9 nU 4S jU 5       n[	        U5      nU H  n[
        R                  " UR                  U5      SS9nUS   nUR                  SUR                  SS 5      5      nUc   e[        XV5       H!  u  pxT R                   R                  Xx45        M#     M     S S S 5        g ! , (       d  f       g = f)	Nr)r   c              3  t   >#    U  H-  nTR                   UR                  ;   d  M  UR                  v   M/     g 7fN)r>   name).0	each_itemr3   s     r5   	<genexpr>%Cifar10._load_data.<locals>.<genexpr>   s)      019TYY)..5P	s   88bytes)encodings   datas   labelss   fine_labels)datatarfileopenr!   sortedpickleloadextractfilegetzipappend)	r3   fnamesrE   batchrL   labelssamplelabels	   `        r5   r1   Cifar10._load_data   s    	\\$..s3q01E 5MEAMM$$7'JW~9eii.MN)))%(%6MFII$$f_5 &7  433s   B!C
C c                   U R                   U   u  p#[        R                  " U/ SQ5      nUR                  / SQ5      nU R                  S:X  a%  [
        R                  " UR                  S5      5      nU R                  b  U R                  U5      nU R                  S:X  a'  U[        R                  " U5      R                  S5      4$ UR                  U R                  5      [        R                  " U5      R                  S5      4$ )N)       r_   )   r   r   r&   uint8int64)rL   npreshape	transposer   r   	fromarrayastyper#   arrayr$   )r3   idximager[   s       r5   __getitem__Cifar10.__getitem__   s    yy~

5+.	*<<5 OOELL$9:E>>%NN5)E<<5 "((5/00999||DJJ'%)?)?)HHHr8   c                ,    [        U R                  5      $ rD   )lenrL   r?   s    r5   __len__Cifar10.__len__   s    499~r8   )	r   rL   r!   r0   r/   r$   r>   r   r#   Nr   NTNr!   r    r   r   r#   r"   r4   boolr   z_ImageBackend | NonereturnNone)ri   intrt   z'tuple[_ImageDataType, npt.NDArray[Any]])__name__
__module____qualname____firstlineno____doc____annotations__r6   r.   r1   rk   ro   __static_attributes__ r8   r5   r   r   6   s    >@ ** !%$15(,&0&0 &0 /	&0
 &0 &&0 
&0P4
6$Ir8   r   )r   znpt.NDArray[Any]c                  Z   ^  \ rS rSrSr     S           SU 4S jjjrS rSrU =r$ )Cifar100   a}	  
Implementation of `Cifar-100 <https://www.cs.toronto.edu/~kriz/cifar.html>`_
dataset, which has 100 categories.

Args:
    data_file (str|None, optional): path to data file, can be set None if
        :attr:`download` is True. Default: None, default data path: ~/.cache/paddle/dataset/cifar
    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:`data_file` is None. 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 Cifar100 dataset.

Examples:

    .. code-block:: python

        >>> # doctest: +TIMEOUT(60)
        >>> import itertools
        >>> import paddle.vision.transforms as T
        >>> from paddle.vision.datasets import Cifar100

        >>> cifar100 = Cifar100()
        >>> print(len(cifar100))
        50000

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


        >>> transform = T.Compose(
        ...     [
        ...         T.Resize(64),
        ...         T.ToTensor(),
        ...         T.Normalize(
        ...             mean=[0.5, 0.5, 0.5],
        ...             std=[0.5, 0.5, 0.5],
        ...             to_rgb=True,
        ...         ),
        ...     ]
        ... )

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

        >>> for img, label in itertools.islice(iter(cifar100_test), 5):  # only show first 5 images
        ...     # do something with img and label
        ...     print(type(img), img.shape, label)  # type: ignore
        ...     # <class 'paddle.Tensor'> [3, 64, 64] 49

c                (   > [         TU ]  XX4U5        g rD   )superr6   )r3   r!   r   r#   r4   r   	__class__s         r5   r6   Cifar100.__init__  s     	)wGr8   c                f    [         U l        [        U l        [        U R
                  S-      U l        g )N100)CIFAR100_URLr/   CIFAR100_MD5r0   r=   r   r>   r?   s    r5   r.   Cifar100._init_url_md5_flag  s%    $$!$))e"34	r8   )r0   r/   r>   rq   rr   )	rw   rx   ry   rz   r{   r6   r.   r}   __classcell__)r   s   @r5   r   r      sp    ?F !%$15(,HH H /	H
 H &H 
H H5 5r8   r   )%
__future__r   rP   rM   typingr   r   r   numpyrc   numpy.typingnptPILr   r*   paddle.dataset.commonr   	paddle.ior	   paddle._typing.dtype_liker
   #paddle.vision.transforms.transformsr   rj   r   r   r   __all__
URL_PREFIXr;   r<   r   r   r=   tupler   r   r~   r8   r5   <module>r      s    #   . .     < 7>5?+L
3
330551 	Vge@AB VrO5w O5r8   