o
    Ni>                     @   s   d Z ddlmZ ddlmZ ddlmZ ddlZddlm  mZ	 ddl
mZ dZdZg dZd	d
 eD ZG dd dejjZG dd dejjZdS )CycleGAN dataset.    )absolute_import)division)print_functionNa  @article{DBLP:journals/corr/ZhuPIE17,
  author    = {Jun{-}Yan Zhu and
               Taesung Park and
               Phillip Isola and
               Alexei A. Efros},
  title     = {Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial
               Networks},
  journal   = {CoRR},
  volume    = {abs/1703.10593},
  year      = {2017},
  url       = {http://arxiv.org/abs/1703.10593},
  archivePrefix = {arXiv},
  eprint    = {1703.10593},
  timestamp = {Mon, 13 Aug 2018 16:48:06 +0200},
  biburl    = {https://dblp.org/rec/bib/journals/corr/ZhuPIE17},
  bibsource = {dblp computer science bibliography, https://dblp.org}
}
Ahttps://people.eecs.berkeley.edu/~taesung_park/CycleGAN/datasets/)apple2orangesummer2winter_yosemitehorse2zebramonet2photocezanne2photoukiyoe2photovangogh2photomaps
cityscapesfacadesiphone2dslr_flowerc                 C   s   i | ]	}|t | d  qS )z.zip)_DL_URL).0name r   f/home/ubuntu/.local/lib/python3.10/site-packages/tensorflow_datasets/image_classification/cycle_gan.py
<dictcomp>;   s    r   c                       s*   e Zd ZdZejjd fdd	Z  ZS )CycleGANConfigzBuilderConfig for CycleGAN.Nc                    s4   |t vr
tdt  tt| jdi | || _dS )zConstructs a CycleGANConfig.

    Args:
      data: `str`, one of `_DATA_OPTIONS`.
      **kwargs: keyword arguments forwarded to super.
    zdata must be one of %sNr   )_DATA_OPTIONS
ValueErrorsuperr   __init__data)selfr   kwargs	__class__r   r   r   A   s   
zCycleGANConfig.__init__)N)	__name__
__module____qualname____doc__tfdscoredisallow_positional_argsr   __classcell__r   r   r    r   r   >   s    r   c                   @   s6   e Zd ZdZdd eD Zdd Zdd Zdd	 Zd
S )CycleGANr   c              	   C   s&   g | ]}t |d tjdd|dqS )zfA dataset consisting of images from two classes A and B (For example: horses/zebras, apple/orange,...)z2.0.0z6New split API (https://tensorflow.org/datasets/splits))r   descriptionversionr   )r   r&   r'   Version)r   config_namer   r   r   
<listcomp>S   s    	zCycleGAN.<listcomp>c              	   C   s>   t jj| | jjt jt j t jjddgddddt	dS )NAB)namesimagelabelr   )builderr+   featuressupervised_keyshomepagecitation)
r&   r'   DatasetInfobuilder_configr+   r7   FeaturesDictImage
ClassLabel	_CITATION)r   r   r   r   _info_   s   zCycleGAN._infoc           	      C   s   t | jj }||}tj|tjj	
|d }tj|d}tj|d}tj|d}tj|d}tjjd|dddtjjd|d	ddtjjd|dddtjjd|d	ddgS )
zReturns SplitGenerators.r   trainAtrainBtestAtestBr0   )pathr5   )r   
gen_kwargsr1   )_DL_URLSr<   r   download_and_extractosrF   jointfiogfilelistdirr&   r'   SplitGenerator)	r   
dl_managerurl	data_dirspath_to_datasettrain_a_pathtrain_b_pathtest_a_pathtest_b_pathr   r   r   _split_generatorsm   s@   
zCycleGAN._split_generatorsc                 c   s<    t jj|}|D ]}tj|||d}||fV  q
d S )Nr3   )rL   rM   rN   rO   rJ   rF   rK   )r   rF   r5   imagesr4   recordr   r   r   _generate_examples   s   zCycleGAN._generate_examplesN)	r"   r#   r$   r%   r   BUILDER_CONFIGSrA   rY   r\   r   r   r   r   r*   P   s    	'r*   )r%   
__future__r   r   r   rJ   tensorflow.compat.v2compatv2rL   tensorflow_datasets.public_api
public_apir&   r@   r   r   rH   r'   BuilderConfigr   GeneratorBasedBuilderr*   r   r   r   r   <module>   s   