U
    ­Ê¹j±	  ã                   @   sL   d dl mZmZmZmZ d dlZddlmZ ddlm	Z	 G dd„ de	ƒZ
dS )	é    )ÚAnyÚCallableÚOptionalÚTupleNé   )Ú
transformsé   )ÚVisionDatasetc                	       sl   e Zd ZdZdeeeeef eee ee eddœ‡ fdd	„Zeee	e	f d
œdd„Z
edœdd„Z‡  ZS )ÚFakeDataað  A fake dataset that returns randomly generated images and returns them as PIL images

    Args:
        size (int, optional): Size of the dataset. Default: 1000 images
        image_size(tuple, optional): Size if the returned images. Default: (3, 224, 224)
        num_classes(int, optional): Number of classes in the dataset. Default: 10
        transform (callable, optional): A function/transform that  takes in an PIL image
            and returns a transformed version. E.g, ``transforms.RandomCrop``
        target_transform (callable, optional): A function/transform that takes in the
            target and transforms it.
        random_offset (int): Offsets the index-based random seed used to
            generate each image. Default: 0

    éè  ©é   éà   r   é
   Nr   )ÚsizeÚ
image_sizeÚnum_classesÚ	transformÚtarget_transformÚrandom_offsetÚreturnc                    s.   t ƒ jd ||d� || _|| _|| _|| _d S )N)r   r   )ÚsuperÚ__init__r   r   r   r   )Úselfr   r   r   r   r   r   ©Ú	__class__© ú\/var/www/html/bwave/python/venv/lib/python3.8/site-packages/torchvision/datasets/fakedata.pyr      s
    	zFakeData.__init__)Úindexr   c                 C   s¦   |t | ƒkrt| jj› d�ƒ‚t ¡ }t || j ¡ tj| j	Ž }tj
d| jdtjd�d }t |¡ t ¡ |ƒ}| jdk	r†|  |¡}| jdk	rš|  |¡}|| ¡ fS )zœ
        Args:
            index (int): Index

        Returns:
            tuple: (image, target) where target is class_index of the target class.
        z index out of ranger   )r   )r   ZdtypeN)ÚlenÚ
IndexErrorr   Ú__name__ÚtorchZget_rng_stateZmanual_seedr   Zrandnr   Úrandintr   ÚlongZset_rng_stater   Z
ToPILImager   r   Úitem)r   r   Z	rng_stateZimgÚtargetr   r   r   Ú__getitem__(   s    	




zFakeData.__getitem__)r   c                 C   s   | j S )N)r   )r   r   r   r   Ú__len__B   s    zFakeData.__len__)r   r   r   NNr   )r!   Ú
__module__Ú__qualname__Ú__doc__Úintr   r   r   r   r   r'   r(   Ú__classcell__r   r   r   r   r
   	   s$         ùør
   )Útypingr   r   r   r   r"   Ú r   Zvisionr	   r
   r   r   r   r   Ú<module>   s   