U C^~ @sddlmZmZddlmZddlmZz ddlZWnLe k rZ z.zddl mZWne k rne YnXW5dZ [ XYnXddgiZ d gZ Gd d d ejjZdS) )absolute_importdivision)tqdm)deepcopyN)kerasz github.com/Z casperdcl TqdmCallbackc@sReZdZdZedddfddZddddefdd Zd d Zd d Z ddZ dS)rz-`keras` callback for epoch and batch progressNcCsdS)Nrlogsr r ,/tmp/pip-install-6_kvzl1k/tqdm/tqdm/keras.pyzTqdmCallback.csdfdd }|S)NcsF}r8r*tfddDjdd|dS)Ncsg|]}|dqS)r)pop).0ir r r sz?TqdmCallback.bar2callback..callback..F)Zrefresh)rZ set_postfixupdate)_r nbardeltarr r callbacksz+TqdmCallback.bar2callback..callback)Nr )rrrrr rr bar2callbacks zTqdmCallback.bar2callbackrcCs||_||dd|_||j|_|rB|rB||d||_}n d|_}||_|dkr||ddd|_|j|jddgd d d |_dS) a  Parameters ---------- epochs : int, optional data_size : int, optional Number of training pairs. batch_size : int, optional Number of training pairs per batch. verbose : int 0: epoch, 1: batch (transient), 2: batch. [default: 1]. Will be set to `0` unless both `data_size` and `batch_size` are given. tqdm_class : optional `tqdm` class to use for bars [default: `tqdm.auto.tqdm`]. epoch)totalunitrNbatchF)rrleavesizecSs |ddSNr rgetr r r r r =rz'TqdmCallback.__init__..rr) tqdm_class epoch_barrZ on_epoch_endbatchesverbose batch_bar on_batch_end)selfepochs data_size batch_sizer(r%r'r r r __init__s  zTqdmCallback.__init__cOs2|jj}|d|dd}|dk r.|jj|ddS)Nr,Znb_epochr)paramsr#r&reset)r+r__r1Z auto_totalr r r on_train_begin?szTqdmCallback.on_train_begincOs|jr|jj}|d|d|ddp(|j}|jdkrt|drH|j|j|ddd|d dp`dd |_|j|jdd gd d d|_ n8|jdkrd|d dpd|j_ |jj |dnt ddS)NZsamplesZ nb_sampleZstepsr)rTrr.)rrr unit_scaler cSs |ddSr!r"r r r r r Srz-TqdmCallback.on_epoch_begin..r$r0zUnknown verbosity) r(r1r#r'hasattrr)closer%rr*r6r2KeyError)r+rr3r1rr r r on_epoch_beginEs4     zTqdmCallback.on_epoch_begincOs|jr|j|jdS)N)r(r)r8r&)r+rr3r r r on_train_endZs zTqdmCallback.on_train_end) __name__ __module__ __qualname____doc__ staticmethodr tqdm_autor/r4r:r;r r r r rs  !) __future__rrautorrAcopyrr ImportErroreZ tensorflow __author____all__ callbacksZCallbackrr r r r s