g"SrSSKrSSKrSSKJr SSKJrJ r SSK J r SSK J r SSKJr S r"S S 5rS S S SSSS SSSSSSSS\\ SS SSS S S S S 4Sjr"SS\R&R(R*5r"SS\5rg)aLoader 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 2020 Ross Wightman N)create_transform)IMAGENET_DEFAULT_MEANIMAGENET_DEFAULT_STD)OrderedDistributedSampler) RandomErasing)FastCollateMixupc [US[5(de[U5n[USS[5(a[USS5nX-n[R"U[R S9n[R"U/USSSR Q7[RS9n[U5Hfn[XS5U:Xde[U5H>nXSXFXq--'XVXq--==[R"XSU5- ss'M@ Mh XT4$[USS[R5(a[R"UVs/sHoSPM sn[R S9n[U5U:Xde[R"U/USSR Q7[RS9n[U5H(nXV==[R"XS5- ss'M* XT4$[USS[R5(a[R"UVs/sHoSPM sn[R S9n[U5U:Xde[R"U/USSR Q7[RS9n[U5HnXVRXS5 M XT4$es snfs snf)zcA fast collation function optimized for uint8 images (np array or torch) and int64 targets (labels)r)dtyper) isinstancetuplelentorchzerosint64shapeuint8range from_numpynpndarraytensorTensorcopy_) batch batch_sizeinner_tuple_sizeflattened_batch_sizetargetsrijbs 5C:\Users\Terry\Desktop\FGVC-HERBS\timm\data\loader.py fast_collater$s eAh & && &UJ%(1+u%%uQx{+)<++2%++F2JU1Xa[^5I5IJRWR]R]^z"Aux{#'77 77+,.3hqkAN*+1>)*e.>.>ux{1~.NN*-#  E!HQK , ,,,e4e!e4EKKH7|z)))j=58A;+<+<=U[[Qz"A I))%(1+6 6I# E!HQK . .,,e4e!e4EKKH7|z)))j=58A;+<+<=U[[Qz"A IOOEHQK (#u 5 5s $KKc\rSrSr\\SSSSS4SjrSrS r\ S 5r \ S 5r \ S 5r \ RS 5r Srg)PrefetchLoader6Fconstrrc ,Xl[R"UV s/sHoS-PM sn 5R5R SSSS5Ul[R"UV s/sHoS-PM sn 5R5R SSSS5UlX@lU(a>UR R5UlUR R5UlUS:a[XVXxS9Ul gSUl gs sn fs sn f)Nrr() probabilitymode max_count num_splits) loaderrrcudaviewmeanstdfp16halfrrandom_erasing) selfr1r4r5r6re_probre_modere_count re_num_splitsxs r#__init__PrefetchLoader.__init__8s LL4!84ac'4!89>>@EEaAqQ <<# 6#QS# 67<<>CCAq!QO  (DIxx}}DH R<"/#X#aD #'D "9 6s D )Dc## [RR5nSnURGHAup4[RR U5 URSS9nURSS9nUR (aCUR 5RUR5RUR5nOBUR5RUR5RUR5nURbURU5nSSS5 U(dWW4v OSn[RR5RU5 UnUnGMD WW4v g!,(df  N[=f7f)NT) non_blockingF)rr2Streamr1streamr6r7sub_r4div_r5floatr8current_stream wait_stream)r9rDfirst next_input next_targetinputtargets r#__iter__PrefetchLoader.__iter__Ns-""$'+{{ #J""6*'__$_? )..D.A 99!+!2!7!7 !B!G!G!QJ!+!1!1!3!8!8!C!H!H!RJ&&2!%!4!4Z!@J+Vm# JJ % % ' 3 3F ;E F%(3(Vm'+*s AF CE<'AF < F F c,[UR5$N)rr1r9s r#__len__PrefetchLoader.__len__hs4;;c.URR$rR)r1samplerrSs r#rXPrefetchLoader.samplerk{{"""rVc.URR$rR)r1datasetrSs r#r\PrefetchLoader.datasetorZrVc[URR[5(a URRR$g)NFr r1 collate_fnr mixup_enabledrSs r#raPrefetchLoader.mixup_enabledss3 dkk,,.> ? ?;;))77 7rVc[URR[5(aXRRlggrRr_)r9r>s r#rarbzs0 dkk,,.> ? ?34KK " " 0 @rV)r6r1r4r8r5N)__name__ __module__ __qualname____firstlineno__rrr?rOrTpropertyrXr\rasetter__static_attributes__rVr#r&r&6s~,)  ',4 #### 55rVr&FTr(r)g?g?bilinearc SnU (a U=(d Sn[U40SU_SU_SU_SU _SU _SU _S U _S U_S U_S U_S U_SU_SU_SU_SU_SU_SU_SU_SUS:_6UlSnU(ay[U[RR R 5(dFU(a4[RR RRU5nO [U5nUc;U(a[O-[RR RRn[RR RnU(a[n[U[U[RR R 5(+=(a USL=(a UUUUUUUS9n U"U40U D6n!U(a"U(a U(dUOSn#[%U!UUUU#UUUS9n!U!$![ a$n"U R#S5 U"U40U D6n!Sn"A"NTSn"A"ff=f)Nr is_traininguse_prefetcherno_augscaleratiohflipvflip color_jitter auto_augment interpolationr4r5crop_pcttf_preprocessingr:r;r<r=separate)rshuffle num_workersrXr` pin_memory drop_lastpersistent_workersrr()r4r5r6r:r;r<r=)r transformr rutilsdataIterableDataset distributedDistributedSamplerrr$ dataloaderdefault_collate DataLoaderMultiEpochsDataLoaderdict TypeErrorpopr&)$r\ input_sizerrorprqr:r;r<re_splitrrrsrtrurvrwnum_aug_splitsrxr4r5r}rryr`r~r6rzuse_multi_epochs_loaderrr=rX loader_class loader_argsr1eprefetch_re_probs$ r# create_loaderrsF>M&+! (&     ""$ * !"#$%&$'( !#)G.G:gu{{/?/?/O/OPP kk&&22EEgNG08G%3\9I9I9T9T9d9d ;;##..L, w (8(8(H(HIImgY]ombm-/K6g55&1&7b $'   M! 6,-g556s' G H %HH c4^\rSrSrU4SjrSrSrSrU=r$)rc>[TU]"U0UD6 SUl[UR5UlSUl[TU]5Ulg)NFT)superr?_DataLoader__initialized_RepeatSampler batch_samplerrOiterator)r9argskwargs __class__s r#r?MultiEpochsDataLoader.__init__sG $)&)(-%+D,>,>?(,%(* rVc@[URR5$rR)rrrXrSs r#rTMultiEpochsDataLoader.__len__s4%%--..rVc#p# [[U55Hn[UR5v M g7frR)rrnextr)r9r s r#rOMultiEpochsDataLoader.__iter__s's4y!At}}% %"s46)rrr) rdrerfrgr?rTrOrj __classcell__)rs@r#rrs+/&&rVrc$\rSrSrSrSrSrSrg)rz;Sampler that repeats forever. Args: sampler (Sampler) cXlgrRrX)r9rXs r#r?_RepeatSampler.__init__s rVc#N# [UR5ShvN MN7frR)iterrXrSs r#rO_RepeatSampler.__iter__s"DLL) ) ) )s %#%rN)rdrerfrg__doc__r?rOrjrkrVr#rrs *rVr)rtorch.utils.datarnumpyrtransforms_factoryr constantsrrdistributed_samplerrr8rmixupr r$r&rrrrrobjectrrkrVr#rs0B:)# FG5G5\ "   %;fR&EKK,,77&" *V *rV