B
    Jd                 @   s   d dl m Z  d dlmZ ddlmZ yd dlZW nP eefk
r Z	 z.yd dl
mZ W n ek
rn   e	Y nX W ddZ	[	X Y nX ddgiZd	gZG d
d	 d	ejjZdS )    )copy)partial   )tqdmN)keraszgithub.com/Z	casperdclTqdmCallbackc               @   s~   e Zd ZdZeddd fddZddddefdd	Zd
d Zdd Z	dd Z
dd Zedd Zedd Zedd ZdS )r   z,Keras callback for epoch and batch progress.Nc             C   s   dS )Nr    )logsr   r   </var/www/html/venv/lib/python3.7/site-packages/tqdm/keras.py<lambda>       zTqdmCallback.<lambda>c                s   d fdd	}|S )Nc                sF    } r8r*t    fddD  j dd | d S )Nc                s   g | ]}  |d qS )r   )pop).0i)r	   r   r
   
<listcomp>   s    z?TqdmCallback.bar2callback.<locals>.callback.<locals>.<listcomp>F)refresh)r   Zset_postfixupdate)_r	   n)bardeltar   )r	   r
   callback   s    z+TqdmCallback.bar2callback.<locals>.callback)Nr   )r   r   r   r   r   )r   r   r   r
   bar2callback   s    	zTqdmCallback.bar2callbackr   c             K   s   |rt |f|}|| _||dd| _| | j| _|rR|rR|| d |  | _}n
d | _}|| _|dkr||ddd| _| j| jddgd	d
 d| _dS )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`].
        tqdm_kwargs  : optional
            Any other arguments used for all bars.
        epoch)totalunitr   NbatchF)r   r   leavesizec             S   s   |  ddS )Nr   r   )get)r	   r   r   r
   r   A   r   z'TqdmCallback.__init__.<locals>.<lambda>)r   r   )	r   
tqdm_class	epoch_barr   Zon_epoch_endbatchesverbose	batch_baron_batch_end)selfepochs	data_size
batch_sizer#   r    Ztqdm_kwargsr"   r   r   r
   __init__    s    

zTqdmCallback.__init__c             O   s>   | j j}|d|dd }|d k	r:|| jjkr:| jj|d d S )Nr'   Znb_epoch)r   )paramsr   r!   r   reset)r&   r   __r+   Z
auto_totalr   r   r
   on_train_beginC   s    zTqdmCallback.on_train_beginc             O   s   | j j|k r$| j }| |_ |_|_| jr| jj}|d|d|dd pL| j}| jdkrt| drl| j	
  | j|ddd|d	dpd d
| _	| j| j	ddgdd d| _n8| jdkrd|d	dpd | j	_| j	j|d ntdd S )NZsamplesZ	nb_sampleZsteps   r$   r   Tr   r)   )r   r   r   
unit_scaler   c             S   s   |  ddS )Nr   r   )r   )r	   r   r   r
   r   Y   r   z-TqdmCallback.on_epoch_begin.<locals>.<lambda>)r   r   )r   zUnknown verbosity)r!   r   Zlast_print_ninitialr#   r+   r   r"   hasattrr$   closer    r   r%   r0   r,   KeyError)r&   r   r   r-   Zebarr+   r   r   r   r
   on_epoch_beginI   s(    




zTqdmCallback.on_epoch_beginc             O   s   | j r| j  | j  d S )N)r#   r$   r3   r!   )r&   r   r-   r   r   r
   on_train_end`   s    
zTqdmCallback.on_train_endc             C   sP   t | jdd}|dkrdS ddlm} || t | dd}|dk	rL||j dS )z*Displays in the current cell in Notebooks.	containerNr   )displayr$   )getattrr!   notebookr8   r7   )r&   r7   r8   r$   r   r   r
   r8   e   s    zTqdmCallback.displayc               C   s   dS )NTr   r   r   r   r
   _implements_train_batch_hooksp   s    z*TqdmCallback._implements_train_batch_hooksc               C   s   dS )NTr   r   r   r   r
   _implements_test_batch_hookst   s    z)TqdmCallback._implements_test_batch_hooksc               C   s   dS )NTr   r   r   r   r
   _implements_predict_batch_hooksx   s    z,TqdmCallback._implements_predict_batch_hooks)__name__
__module____qualname____doc__staticmethodr   	tqdm_autor*   r.   r5   r6   r8   r;   r<   r=   r   r   r   r
   r      s   ")r   	functoolsr   autor   rC   r   ImportErrorAttributeErroreZ
tensorflow
__author____all__	callbacksZCallbackr   r   r   r   r
   <module>   s   
