ó
    Äö‘jˆR  ã            b       óê  • S r SSKrSSKrSSKJr  SSKJr  SSKJr  SSK	J
r
JrJrJrJr  SSKrSSKrSSKrSSKJrJr  SS	KJrJr  SS
KJrJr  SSKJr  SSKJr  SSK J!r!J"r"  SSK#J$r$  \RJ                  " \&5      r'S r(S r) " S S5      r*SVS jr+SSSSSSSSSSSSSSSSSSS\\SSSSSSSS\RX                  \RZ                  " S5      SSSSSSSSSSSSSS4-S \\\4   S!\\.\\.\.4   \\.\.\.4   4   S"\.S#\/S$\/S%\0S&\1S'\.S(\/S)\\1   S*\\\0\04      S+\\\0\04      S,\0S-\0S.\0S/\\0   S0\0S1\0S2\\1   S3\.S4\.S5\1S6\\0S74   S8\\0S74   S9\.S:\/S;\\0   S<\\1   S=\\.   S>\\
   S?\/S@\/SA\Rd                  SB\RZ                  SC\/SD\/SE\/SF\1SG\/SH\\\\.\\.\.4   \\.\.\.4   4         SI\\\.      SJ\\\0      SK\.SL\1SM\\.   SN\0SO\0SP\\.   4`SQ jjr3 " SR SS\Rh                  Rj                  Rl                  5      r7 " ST SU\85      r9g)Wa  Loader Factory, Fast Collate, CUDA Prefetcher

Prefetcher and Fast Collate inspired by NVIDIA APEX example at
https://github.com/NVIDIA/apex/commit/d5e2bb4bdeedd27b1dfaf5bb2b24d6c000dee9be#diff-cf86c282ff7fba81fad27a559379d5bf

Hacked together by / Copyright 2019, Ross Wightman
é    N)Úsuppress)Úpartial)Úrepeat)ÚCallableÚOptionalÚSequenceÚTupleÚUnioné   )ÚIMAGENET_DEFAULT_MEANÚIMAGENET_DEFAULT_STD)ÚIterableImageDatasetÚImageDataset)ÚOrderedDistributedSamplerÚRepeatAugSampler)ÚRandomErasing)ÚFastCollateMixup)ÚScheduledBatchSamplerÚScheduledTransformDataset)Úcreate_transformc           	      óN  • [        U S   [        5      (       d   e[        U 5      n[        U S   S   [        5      (       Ga,  [        U S   S   [        R                  5      n[        U S   S   5      nX-  n[
        R                  " U[
        R                  S9n[
        R                  " U/U S   S   S   R                  Q7[
        R                  S9n[        U5       Hˆ  n[        X   S   5      U:X  d   e[        U5       H`  nX   S   XWX�-  -   '   U(       a/  XgX�-  -   ==   [
        R                  " X   S   U   5      -  ss'   MG  XgX�-  -   ==   X   S   U   -  ss'   Mb     MŠ     Xe4$ [        U S   S   [        R                  5      (       a¸  [
        R                  " U  V	s/ s H  o™S   PM	     sn	[
        R                  S9n[        U5      U:X  d   e[
        R                  " U/U S   S   R                  Q7[
        R                  S9n[        U5       H(  nXg==   [
        R                  " X   S   5      -  ss'   M*     Xe4$ [        U S   S   [
        R                  5      (       a«  [
        R                  " U  V	s/ s H  o™S   PM	     sn	[
        R                  S9n[        U5      U:X  d   e[
        R                  " U/U S   S   R                  Q7[
        R                  S9n[        U5       H  nXg   R                  X   S   5        M     Xe4$  es  sn	f s  sn	f )zcA fast collation function optimized for uint8 images (np array or torch) and int64 targets (labels)r   )Údtyper   )Ú
isinstanceÚtupleÚlenÚnpÚndarrayÚtorchÚzerosÚint64ÚshapeÚuint8ÚrangeÚ
from_numpyÚtensorÚTensorÚcopy_)
ÚbatchÚ
batch_sizeÚis_npÚinner_tuple_sizeÚflattened_batch_sizeÚtargetsr%   ÚiÚjÚbs
             ÚžC:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\timm/data/loader.pyÚfast_collater2      sº  € ä�e˜A‘h¤×&Ñ&Ð&Ð&Ü�U“€JÜ�%˜‘(˜1‘+œu×%Ò%ô ˜5 ™8 A™;¬¯
©
Ó3ˆÜ˜u Q™x¨™{Ó+ÐØ)Ñ<ÐÜ—+’+Ð2¼%¿+¹+ÑFˆÜ—’Ð2ÐJ°U¸1±X¸a±[À±^×5IÑ5IÑJÔRW×R]ÑR]Ñ^ˆÜ�zÖ"ˆAÜ�u‘x ‘{Ó#Ð'7Ó7Ð7Ð7ÜÐ+Ö,�Ø.3©h°q©k�˜A™NÑ*Ñ+ÞØ˜q™~Ñ-Ó.´%×2BÒ2BÀ5Á8ÈAÁ;ÈqÁ>Ó2RÑRÕ.à˜q™~Ñ-Ó.°%±(¸1±+¸a±.Ñ@Õ.ó -ñ #ð ˆÐÜ	�E˜!‘H˜Q‘K¤§¡×	,Ñ	,Ü—,’,©eÓ4ªe¨ !¤©eÑ4¼E¿K¹KÑHˆÜ�7‹|˜zÓ)Ð)Ð)Ü—’˜jÐ=¨5°©8°A©;×+<Ñ+<Ñ=ÄUÇ[Á[ÑQˆÜ�zÖ"ˆAØ‹Iœ×)Ò)¨%©(°1©+Ó6Ñ6�Iñ #àˆÐÜ	�E˜!‘H˜Q‘K¤§¡×	.Ñ	.Ü—,’,©eÓ4ªe¨ !¤©eÑ4¼E¿K¹KÑHˆÜ�7‹|˜zÓ)Ð)Ð)Ü—’˜jÐ=¨5°©8°A©;×+<Ñ+<Ñ=ÄUÇ[Á[ÑQˆÜ�zÖ"ˆAØ‰I�O‰O˜E™H Q™KÖ(ñ #àˆÐàˆuùò  5ùò  5s   Æ'LÊL"c                 ó<  • [        U [        [        45      (       d  [        [        X5      5      n U $ [	        U 5      U:w  aE  [
        R                  " U 5      R                  5       nU4U-  n [        R                  SU  S35        U $ [	        U 5      U:X  d   S5       eU $ )Nz@Pretrained mean/std different shape than model, using avg value Ú.z-normalization stats must match image channels)
r   r   Úlistr   r   r   ÚmeanÚitemÚ_loggerÚwarning)ÚxÚnÚx_means      r1   Úadapt_to_chsr=   E   s‘   € Ü�aœ%¤˜×'Ñ'Ü”&˜“,Óˆð €Hô 
ˆQ‹�1‹Ü—’˜“—‘Ó"ˆØˆI˜‰MˆÜ�‰ÐZÐ[\ÐZ]Ð]^Ð_Ô`ð €Hô �1‹v˜‹{ÐKÐKÓKˆ{Ø€Hó    c                   óp  • \ rS rSr\\S\R                  " S5      SSSSSS	4
S
\R                  R                  R                  S\\S4   S\\S4   S\S\R                  S\\R                     S\S\S\S\S\4S jjrS rS r\S 5       r\S 5       r\S 5       r\S 5       r\R4                  S 5       rSrg)ÚPrefetchLoaderéQ   é   ÚcudaNFç        Úconstr   r   Úloaderr6   .ÚstdÚchannelsÚdeviceÚ	img_dtypeÚfp16Úre_probÚre_modeÚre_countÚre_num_splitsc                 óæ  • [        X$5      n[        X45      nSUSS4nXl        XPl        U(       a  [        R                  nU=(       d    [        R
                  U l        [        R                  " U Vs/ s H  oÝS-  PM	     snXVS9R                  U5      U l	        [        R                  " U Vs/ s H  oÝS-  PM	     snXVS9R                  U5      U l
        US:”  a  [        UU	U
UUS9U l        OS U l        UR                  S:H  =(       a    [        R                  R                  5       U l        UR                  S:H  =(       a    [        R"                  R                  5       U l        g s  snf s  snf )Nr   éÿ   )rI   r   rD   )ÚprobabilityÚmodeÚ	max_countÚ
num_splitsrI   rC   Únpu)r=   rF   rI   r   Úfloat16Úfloat32rJ   r%   Úviewr6   rG   r   Úrandom_erasingÚtyperC   Úis_availableÚis_cudarV   Úis_npu)ÚselfrF   r6   rG   rH   rI   rJ   rK   rL   rM   rN   rO   Únormalization_shaper:   s                 r1   Ú__init__ÚPrefetchLoader.__init__S   s0  € ô ˜DÓ+ˆÜ˜3Ó)ˆØ  (¨A¨qÐ1ÐàŒØŒÞäŸ™ˆIØ"×3¤e§m¡mˆŒÜ—L’LÙ"Ó#šd˜�ŒW™dÑ#¨FñEßEIÁTÐJ]ÓE^ð 	Œ	ä—<’<Ù!Ó"šc˜�ŒW™cÑ"¨6ñDßDHÁDÐI\ÓD]ð 	Œà�R‹<Ü"/Ø#ØØ"Ø(Øñ#ˆDÕð #'ˆDÔØ—{‘{ fÑ,×J´·±×1HÑ1HÓ1JˆŒØ—k‘k UÑ*×G¬u¯y©y×/EÑ/EÓ/Gˆ�ùò $ùâ"s   Á2E)Â.E.c              #   ó’  #   • SnU R                   (       aJ  [        R                  R                  U R                  S9n[        [        R                  R                  US9nOcU R                  (       aJ  [        R                  R                  U R                  S9n[        [        R                  R                  US9nOS n[        nU R                   GH[  u  pEU" 5          UR                  U R                  SS9nUR                  U R                  SS9nUR                  U R                  5      R                  U R                  5      R                  U R                   5      nU R"                  b  U R#                  U5      nS S S 5        U(       d  WW4v •  OSnUb�  U R                   (       a7  [        R                  R%                  U R                  S9R'                  U5        OGU R                  (       a6  [        R                  R%                  U R                  S9R'                  U5        UnUnGM^     WW4v •  g ! , (       d  f       NÀ= f7f)NT)rI   )Ústream)rI   Únon_blockingF)r]   r   rC   ÚStreamrI   r   rd   r^   rV   r   rF   ÚtorJ   Úsub_r6   Údiv_rG   rZ   Úcurrent_streamÚwait_stream)r_   Úfirstrd   Ústream_contextÚ
next_inputÚnext_targetÚinputÚtargets           r1   Ú__iter__ÚPrefetchLoader.__iter__|   s©  é € ØˆØ�<�<Ü—Z‘Z×&Ñ&¨d¯k©kÐ&Ð:ˆFÜ$¤U§Z¡Z×%6Ñ%6¸vÑF‰NØ�[�[Ü—Y‘Y×%Ñ%¨T¯[©[Ð%Ð9ˆFÜ$¤U§Y¡Y×%5Ñ%5¸fÑE‰NàˆFÜ%ˆNà'+§{¥{Ñ#ˆJáÕ!Ø'Ÿ]™]°$·+±+ÈD˜]ÐQ�
Ø)Ÿn™n°D·K±KÈd˜nÐS�Ø'Ÿ]™]¨4¯>©>Ó:×?Ñ?ÀÇ	Á	ÓJ×OÑOÐPT×PXÑPXÓY�
Ø×&Ñ&Ñ2Ø!%×!4Ñ!4°ZÓ!@�J÷ "ö Ø˜V�mÓ#à�àÑ!Ø—<—<Ü—J‘J×-Ñ-°T·[±[Ð-ÐA×MÑMÈfÕUØ—[—[Ü—I‘I×,Ñ,°D·K±KÐ,Ð@×LÑLÈVÔTàˆEØ ‹Fñ+ (3ð. �VˆmÓ÷+ "Õ!üs    ‚CIÃB H6Å<B:IÈ6
I	É Ic                 ó,   • [        U R                  5      $ ©N)r   rF   ©r_   s    r1   Ú__len__ÚPrefetchLoader.__len__¡   s   € Ü�4—;‘;ÓÐr>   c                 ó.   • U R                   R                  $ ru   )rF   Úsamplerrv   s    r1   rz   ÚPrefetchLoader.sampler¤   ó   € à�{‰{×"Ñ"Ð"r>   c                 ó.   • U R                   R                  $ ru   )rF   Úbatch_samplerrv   s    r1   r~   ÚPrefetchLoader.batch_sampler¨   s   € à�{‰{×(Ñ(Ð(r>   c                 ó.   • U R                   R                  $ ru   )rF   Údatasetrv   s    r1   r�   ÚPrefetchLoader.dataset¬   r|   r>   c                 ó–   • [        U R                  R                  [        5      (       a   U R                  R                  R                  $ g)NF©r   rF   Ú
collate_fnr   Úmixup_enabledrv   s    r1   r†   ÚPrefetchLoader.mixup_enabled°   s3   € ä�d—k‘k×,Ñ,Ô.>×?Ñ?Ø—;‘;×)Ñ)×7Ñ7Ð7àr>   c                 óŒ   • [        U R                  R                  [        5      (       a  XR                  R                  l        g g ru   r„   )r_   r:   s     r1   r†   r‡   ·   s0   € ä�d—k‘k×,Ñ,Ô.>×?Ñ?Ø34�K‰K×"Ñ"Õ0ð @r>   )rI   rJ   r]   r^   rF   r6   rZ   rG   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r   rI   ÚutilsÚdataÚ
DataLoaderr	   ÚfloatÚintr   r   ÚboolÚstrra   rr   rw   Úpropertyrz   r~   r�   r†   ÚsetterÚ__static_attributes__© r>   r1   r@   r@   Q   sM  † ð
 '<Ø%9ØØ#(§<¢<°Ó#7Ø/3ØØØ"ØØ!"ñ'Hà—K‘K×$Ñ$×/Ñ/ð'Hð ˜˜s˜
Ñ#ð'Hð �u˜c�zÑ"ð	'Hð
 ð'Hð —L‘Lð'Hð   §¡Ñ,ð'Hð ð'Hð ð'Hð ð'Hð ð'Hð õ'HòR#òJ ð ñ#ó ð#ð ñ)ó ð)ð ñ#ó ð#ð ñó ðð ×Ññ5ó ó5r>   r@   Úallc                 óÆ  • [         R                  R                  R                  5       nUR                  U :X  d   e[        U[        5      (       aW  U" U5      n[        R                  " U5        [         R                  " U5        [        R                  R                  US-  5        g US;   d   eUS:X  a-  [        R                  R                  UR                  S-  5        g g )Nl   ÿÿ )r˜   Úpartr˜   )r   r�   rŽ   Úget_worker_infoÚidr   r   ÚrandomÚseedÚmanual_seedr   )Ú	worker_idÚworker_seedingÚworker_inforž   s       r1   Ú_worker_initr£   ½   sª   € Ü—+‘+×"Ñ"×2Ñ2Ó4€KØ�>‰>˜YÓ&Ð&Ð&Ü�.¤(×+Ñ+Ù˜kÓ*ˆÜ�Š�DÔÜ×Ò˜$ÔÜ
�	‰	�‰�t˜{Ñ+Õ,à Ó0Ð0Ð0ð ˜UÓ"Ü�I‰I�N‰N˜;×+Ñ+¨{Ñ;Õ<ð #r>   FrD   rE   g      à?gš™™™™™Ù?ÚbilinearrC   TÚconstantgÍÌÌÌÌÌä?gš™™™™™¹?r�   Ú
input_sizer)   Úis_trainingÚno_augrL   rM   rN   Úre_splitÚtrain_crop_modeÚscaleÚratioÚhflipÚvflipÚcolor_jitterÚcolor_jitter_probÚgrayscale_probÚgaussian_blur_probÚauto_augmentÚnum_aug_repeatsÚnum_aug_splitsÚinterpolationr6   .rG   Únum_workersÚdistributedÚcrop_pctÚ	crop_modeÚcrop_border_pixelsr…   Ú
pin_memoryrK   rJ   rI   Úuse_prefetcherÚuse_multi_epochs_loaderÚpersistent_workersr¡   Útf_preprocessingÚinput_size_choicesÚbatch_size_choicesÚbatch_choice_weightsÚbatch_choice_seedÚbatch_choice_scheduleÚbatch_schedule_epochsÚbatch_schedule_spreadÚbatch_schedule_random_mixÚnum_batchesc0                 óØ	  • Sn0U(       a  U=(       d    Sn0[        S40 SU_SU_SU	_SU
_SU_SU_S	U_S
U_SU_SU_SU_SU_SU_SU_SU_SU_SU_SU_SU_SU_SU_SU0_SU&_SU"_SUS:„  _6n1[        U[        [        45      (       a  [	        U5      S:X  a  US   O
[	        U5      n2U'SLn3U3(       Gaº  U(       d  [        S5      eU#(       a  [        S5      e[        U [        R                  R                  R                  5      (       a  [        S 5      eUS:”  a  [        S!5      eU'(       d  [        S"5      e/ n4U' H¡  n5[        U5[        5      (       a  U2U5U54n5OP[	        U55      S:X  a  U2/U5Q7n5O:[	        U55      S:X  a   [        U55      n5U5S   U2:w  a  [        S#5      eO[        S$5      e[        S% U5 5       5      (       a  [        S&5      eU4R                  U55        M£     U(c  U/[	        U45      -  n(O#[	        U(5      [	        U45      :w  a  [        S'5      eU)b#  [	        U)5      [	        U45      :w  a  [        S(5      eU4 V5s/ s H  n5[        U540 U1D6PM     n6n5SU l        [!        U U65      n O[        U40 U1D6U l        [        U ["        5      (       a  U R%                  US)9  Sn7U(       aŒ  [        U [        R                  R                  R                  5      (       dY  U(       aF  U(       a  ['        U US*9n7OM[        R                  R                  R(                  R+                  U 5      n7O[-        U 5      n7OUS:X  d   S+5       eU3(       a,  U7c)  [        R                  R                  R/                  U 5      n7Uc;  U"(       a  [0        O-[        R                  R                  R2                  R4                  n[        R                  R                  R6                  n8U#(       a  [8        n8[        UUU[;        [<        U%S,9U$=(       a    US:„  S-9n9U3(       a  [?        U7U(U)U*UU/U+U,U-U.S.9
U9S/'   OWU9RA                  U[        U [        R                  R                  R                  5      (       + =(       a    U7SL =(       a    UU7US09   U8" U 40 U9D6n:U"(       a%  U(       a	  U(       d  UOS2n<[E        U:UUU2U!UU U<UUU0S39n:U:$ s  sn5f ! [         a$  n;U9RC                  S15        U8" U 40 U9D6n: Sn;A;N\Sn;A;ff = f)5aä  

Args:
    dataset: The image dataset to load.
    input_size: Target input size (channels, height, width) tuple or size scalar.
    batch_size: Number of samples in a batch.
    is_training: Return training (random) transforms.
    no_aug: Disable augmentation for training (useful for debug).
    re_prob: Random erasing probability.
    re_mode: Random erasing fill mode.
    re_count: Number of random erasing regions.
    re_split: Control split of random erasing across batch size.
    scale: Random resize scale range (crop area, < 1.0 => zoom in).
    ratio: Random aspect ratio range (crop ratio for RRC, ratio adjustment factor for RKR).
    hflip: Horizontal flip probability.
    vflip: Vertical flip probability.
    color_jitter: Random color jitter component factors (brightness, contrast, saturation, hue).
        Scalar is applied as (scalar,) * 3 (no hue).
    color_jitter_prob: Apply color jitter with this probability if not None (for SimlCLR-like aug
    grayscale_prob: Probability of converting image to grayscale (for SimCLR-like aug).
    gaussian_blur_prob: Probability of applying gaussian blur (for SimCLR-like aug).
    auto_augment: Auto augment configuration string (see auto_augment.py).
    num_aug_repeats: Enable special sampler to repeat same augmentation across distributed GPUs.
    num_aug_splits: Enable mode where augmentations can be split across the batch.
    interpolation: Image interpolation mode.
    mean: Image normalization mean.
    std: Image normalization standard deviation.
    num_workers: Num worker processes per DataLoader.
    distributed: Enable dataloading for distributed training.
    crop_pct: Inference crop percentage (output size / resize size).
    crop_mode: Inference crop mode. One of ['squash', 'border', 'center']. Defaults to 'center' when None.
    crop_border_pixels: Inference crop border of specified # pixels around edge of original image.
    collate_fn: Override default collate_fn.
    pin_memory: Pin memory for device transfer.
    fp16: Deprecated argument for half-precision input dtype. Use img_dtype.
    img_dtype: Data type for input image.
    device: Device to transfer inputs and targets to.
    use_prefetcher: Use efficient pre-fetcher to load samples onto device.
    use_multi_epochs_loader:
    persistent_workers: Enable persistent worker processes when ``num_workers`` is greater than zero.
    worker_seeding: Control worker random seeding at init.
    tf_preprocessing: Use TF 1.0 inference preprocessing for testing model ports.
    input_size_choices: Per-batch input size choices for scheduled resolution training.
    batch_size_choices: Batch size corresponding to each input size choice. Uses ``batch_size`` for all
        choices when not specified.
    batch_choice_weights: Sampling weights for input size choices. Uniform when not specified.
    batch_choice_seed: Random seed used to create and shuffle the batch schedule.
    batch_choice_schedule: Choice schedule mode, either ``constant`` or ``progressive``.
    batch_schedule_epochs: Number of epochs over which a progressive schedule moves through its choices.
    batch_schedule_spread: Standard deviation of the progressive choice window, in choice-index units.
    batch_schedule_random_mix: Fraction of uniform random exploration over nonzero-weight choices in a
        progressive schedule.
    num_batches: Fixed number of loader batches per epoch. Inferred from the schedule-average batch size
        for progressive schedules when not specified.

Returns:
    DataLoader
r   é   r§   r¨   rª   r«   r¬   r­   r®   r¯   r°   r±   r²   r³   r¶   r6   rG   r¹   rº   r»   rL   rM   rN   rO   rÀ   r½   ÚseparaterB   Nz>Scheduled input sizes are only supported for training loaders.zBMultiEpochsDataLoader is not supported with scheduled input sizes.z2Scheduled input sizes require a map-style dataset.zAAugmentation splits are not supported with scheduled input sizes.z2input_size_choices must contain at least one size.z?All scheduled input sizes must use the same number of channels.z@Scheduled input sizes must be scalars, HW tuples, or CHW tuples.c              3   ó*   #   • U  H	  oS :*  v •  M     g7f)r   Nr—   )Ú.0Ú	dimensions     r1   Ú	<genexpr>Ú create_loader.<locals>.<genexpr>w  s   é € Ð8²4 i –>²4ùs   ‚z5All scheduled input size dimensions must be positive.zDbatch_size_choices and input_size_choices must have the same length.zFbatch_choice_weights and input_size_choices must have the same length.)r·   )Únum_repeatszORepeatAugment not currently supported in non-distributed or IterableDataset use)r¡   )r·   r…   r¼   Úworker_init_fnr¿   )	Úbatch_sizesÚchoice_weightsrž   Ú	drop_lastrÉ   Úchoice_scheduleÚschedule_epochsÚschedule_spreadÚschedule_random_mixr~   )r)   Úshufflerz   rÖ   r¿   rD   )
r6   rG   rH   rI   rK   rJ   rL   rM   rN   rO   r—   )#Údictr   r   r5   r   Ú
ValueErrorr   r�   rŽ   ÚIterableDatasetÚ	TypeErrorr‘   ÚanyÚappendr   Ú	transformr   r   Úset_loader_cfgr   r¸   ÚDistributedSamplerr   ÚRandomSamplerr2   Ú
dataloaderÚdefault_collater�   ÚMultiEpochsDataLoaderr   r£   r   ÚupdateÚpopr@   )=r�   r¦   r)   r§   r¨   rL   rM   rN   r©   rª   r«   r¬   r­   r®   r¯   r°   r±   r²   r³   r´   rµ   r¶   r6   rG   r·   r¸   r¹   rº   r»   r…   r¼   rK   rJ   rI   r½   r¾   r¿   r¡   rÀ   rÁ   rÂ   rÃ   rÄ   rÅ   rÆ   rÇ   rÈ   rÉ   rO   Útransform_kwargsrH   Úscheduled_batchingÚresolved_input_sizesÚsizeÚ
transformsrz   Úloader_classÚloader_argsrF   ÚeÚprefetch_re_probs=                                                                r1   Úcreate_loaderrô   Í   sM  € ðX €MÞà&×+¨!ˆÜò Ùðáðñ (ðñ ð	ñ
 ðñ ðñ ðñ "ðñ ,ðñ &ðñ .ðñ "ðñ $ðñ ðñ ðñ  ð!ñ" ð#ñ$ .ð%ñ& ð'ñ( ð)ñ* ð+ñ, $ð-ñ. *ð/ñ0 &ð1ð2   !Ò#ð3Ðô: �j¤5¬$ -×0Ñ0´S¸³_ÈÓ5Ið 	�1Šä�‹Yð ð ,°4Ð7ÐßÞÜÐ]Ó^Ð^Þ"ÜÐaÓbÐbÜ�gœuŸ{™{×/Ñ/×?Ñ?×@Ñ@ÜÐPÓQÐQØ˜AÓÜÐ`ÓaÐaÞ!ÜÐQÓRÐRà!ÐÛ&ˆDÜ˜$¤×$Ñ$Ø  $¨Ð-‘Ü�T“˜a“Ø Ð( 4Ñ(‘Ü�T“˜a“Ü˜T“{�Ø˜‘7˜hÓ&Ü$Ð%fÓgÐgð 'ô !Ð!cÓdÐdÜÑ8±4Ó8×8Ñ8Ü Ð!XÓYÐYØ ×'Ñ'¨Ö-ñ 'ð Ñ%Ø", ´Ð4HÓ0IÑ!IÑÜÐ#Ó$¬Ð,@Ó(AÓAÜÐcÓdÐdØÑ+´Ð4HÓ0IÌSÐQeÓMfÓ0fÜÐeÓfÐfáMaÓbÒMaÀTÔ& tÑ@Ð/?Ô@ÑMaˆ
ÐbØ ˆÔÜ+¨G°ZÓ@‰ä,¨ZÑLÐ;KÑLˆÔä�'Ô/×0Ñ0ð 	×Ñ¨;ÐÑ7à€GÞœ: g¬u¯{©{×/?Ñ/?×/OÑ/O×PÑPÞÞÜ*¨7ÀÑP‘äŸ+™+×*Ñ*×6Ñ6×IÑIÈ'ÓR‘ô 0°Ó8‰Gà !Ó#ÐvÐ%vÓvÐ#æ˜g™oÜ—+‘+×"Ñ"×0Ñ0°Ó9ˆàÑÞ%3•\¼¿¹×9IÑ9I×9TÑ9T×9dÑ9dˆ
ä—;‘;×#Ñ#×.Ñ.€LÞÜ,ˆäØØØÜœ|¸NÑKØ-×A°+À±/ñ€Kö Ü'<ØØ*Ø/Ø"Ø!Ø#Ø1Ø1Ø1Ø 9ñ(
ˆ�OÒ$ð 	×ÑØ!Ü" 7¬E¯K©K×,<Ñ,<×,LÑ,LÓMÔM×qÐRYÐ]aÐRa×qÐfqØØ!ð	 	ñ 	
ð6Ù˜gÑ5¨Ñ5ˆö Þ&1¾&™7ÀbÐÜØØØØØØØØ$ØØØ'ñ
ˆð €Mùòg cøô@ ó 6Ø�‰Ð,Ô-Ù˜gÑ5¨Ñ5�ûð6ús   É R6Ñ?	R; Ò;
S)ÓS$Ó$S)c                   ó4   ^ • \ rS rSrU 4S jrS rS rSrU =r$ )rè   iØ  c                 óì   >• [         TU ]  " U0 UD6  SU l        U R                  c  [	        U R
                  5      U l        O[	        U R                  5      U l        SU l        [         TU ]  5       U l        g )NFT)Úsuperra   Ú_DataLoader__initializedr~   Ú_RepeatSamplerrz   rr   Úiterator)r_   ÚargsÚkwargsÚ	__class__s      €r1   ra   ÚMultiEpochsDataLoader.__init__Ú  sc   ø€ Ü‰Ò˜$Ð) &Ò)Ø(-ˆÔ%Ø×ÑÑ%Ü)¨$¯,©,Ó7ˆD�Lä!/°×0BÑ0BÓ!CˆDÔØ(,ˆÔ%Ü™Ñ(Ó*ˆ�r>   c                 ó„   • U R                   c  [        U R                  5      $ [        U R                   R                  5      $ ru   )r~   r   rz   rv   s    r1   rw   ÚMultiEpochsDataLoader.__len__ä  s2   € Ø$(×$6Ñ$6Ñ$>Œs�4—<‘<Ó ÐcÄCÈ×HZÑHZ×HbÑHbÓDcÐcr>   c              #   óp   #   • [        [        U 5      5       H  n[        U R                  5      v •  M     g 7fru   )r#   r   Únextrú   )r_   r.   s     r1   rr   ÚMultiEpochsDataLoader.__iter__ç  s'   é € Ü”s˜4“yÖ!ˆAÜ�t—}‘}Ó%Ô%ò "ùs   ‚46)rø   r~   rú   rz   )	r‰   rŠ   r‹   rŒ   ra   rw   rr   r–   Ú__classcell__)rý   s   @r1   rè   rè   Ø  s   ø† õ+òd÷&ð &r>   rè   c                   ó$   • \ rS rSrSrS rS rSrg)rù   iì  z;Sampler that repeats forever.

Args:
    sampler (Sampler)
c                 ó   • Xl         g ru   ©rz   )r_   rz   s     r1   ra   Ú_RepeatSampler.__init__ó  s   € Ø�r>   c              #   óN   #   •  [        U R                  5       S h  v•N   M   N7fru   )Úiterrz   rv   s    r1   rr   Ú_RepeatSampler.__iter__ö  s"   é € ØÜ˜DŸL™LÓ)×)Ð)ñ Ù)ùs   ‚%œ#�%r  N)r‰   rŠ   r‹   rŒ   Ú__doc__ra   rr   r–   r—   r>   r1   rù   rù   ì  s   † ñòõ*r>   rù   )r˜   ):r  Úloggingr�   Ú
contextlibr   Ú	functoolsr   Ú	itertoolsr   Útypingr   r   r   r	   r
   r   Útorch.utils.dataÚnumpyr   Ú	constantsr   r   r�   r   r   Údistributed_samplerr   r   rZ   r   Úmixupr   Úscheduled_samplerr   r   Útransforms_factoryr   Ú	getLoggerr‰   r8   r2   r=   r@   r£   rX   rI   r‘   r’   r�   r“   r   rô   r�   rŽ   r�   rè   Úobjectrù   r—   r>   r1   Ú<module>r     s$  ðñó Û Ý Ý Ý ß =Õ =ã Û Û ç Bß 7ß LÝ )Ý #ß OÝ 0à
×
Ò
˜HÓ
%€ò$òN	÷i5ñ i5ôX=ð( "ØØØØØØ)-Ø/3Ø/3ØØØ!Ø-1Ø "Ø$&Ø&*Ø ØØ'Ø"7Ø!5ØØ!Ø$(Ø#'Ø,0Ø)-Ø ØØ!&§¡Ø$Ÿ|š|¨FÓ3Ø#Ø(-Ø#'Ø#Ø!&ØdhØ6:Ø:>Ø!"Ø%/Ø/3Ø'+Ø+.Ø%)ñaHØ�|Ð%9Ð9Ñ:ðHà˜#˜u S¨# X™°°c¸3À°mÑ0DÐDÑEðHð ðHð ð	Hð
 ðHð ðHð ðHð ðHð ðHð " #™ðHð ˜˜e U˜lÑ+Ñ,ðHð ˜˜e U˜lÑ+Ñ,ðHð ðHð ðHð ðHð  $ E™?ð!Hð" ð#Hð$ "ð%Hð& ˜s‘mð'Hð( ð)Hð* ð+Hð, ð-Hð. �E˜3�JÑð/Hð0 �5˜#�:Ñð1Hð2 ð3Hð4 ð5Hð6 ˜5‘/ð7Hð8 ˜C‘=ð9Hð: % S™Mð;Hð< ˜XÑ&ð=Hð> ð?Hð@ ðAHðB —;‘;ðCHðD —‘ðEHðF ðGHðH "&ðIHðJ !ðKHðL ðMHðN ðOHðP % X¨e°C¸¸sÀC¸x¹È%ÐPSÐUXÐZ]ÐP]ÑJ^Ð4^Ñ._Ñ%`ÑaðQHðR % X¨c¡]Ñ3ðSHðT ' x°¡Ñ7ðUHðV ðWHðX  #ðYHðZ  (¨™}ð[Hð\  %ð]Hð^ $)ð_Hð` ˜c‘]õaHôV&˜EŸK™K×,Ñ,×7Ñ7ô &ô(*�Võ *r>   