o
    Xεi
                     @   s4   d dl Z d dlmZ d dlmZ G dd deZdS )    N)SummaryWriter)BaseDashboardLoggerc                   @   s   e Zd Zdd Zdd Zdd Zdeded	ed
dfddZ	dd Z
dd Zdd Zd ddZdd Zdd Zdd Zdd Zdd ZdS )!TensorboardLoggerc                 C   s   || _ t|| _d S N)
model_namer   writer)selflog_dirr    r
   V/home/ubuntu/.local/lib/python3.10/site-packages/trainer/logging/tensorboard_logger.py__init__	   s   zTensorboardLogger.__init__c                 C   s   d}|  D ]n\}}| dkr| jd||| | nQ| jd||| | | jd||| | | jd||| | | jd||| | | j	d|||| | j	d|||j
| |d7 }qd S )	N   zlayer{}-{}/valuezlayer{}-{}/maxzlayer{}-{}/minzlayer{}-{}/meanzlayer{}-{}/stdzlayer{}-{}/paramzlayer{}-{}/grad)named_parametersnumelr   
add_scalarformatmaxminmeanstdadd_histogramgrad)r   modelstep	layer_numnameparamr
   r
   r   model_weights   s   
zTensorboardLogger.model_weightsc                 C   s   |  dd|  dd d S )Nzmodel-configz<pre>z</pre>r   )add_textto_json)r   configr
   r
   r   
add_config   s   zTensorboardLogger.add_configtitlevaluer   returnNc                 C      | j ||| d S r   )r   r   )r   r"   r#   r   r
   r
   r   r         zTensorboardLogger.add_scalarc                 C   s   | j j||||d d S )Nsample_rate)r   	add_audio)r   r"   audior   r(   r
   r
   r   r)   !   s   zTensorboardLogger.add_audioc                 C   r%   r   )r   r   )r   r"   textr   r
   r
   r   r   $   r&   zTensorboardLogger.add_textc                 C   r%   r   )r   
add_figure)r   r"   figurer   r
   r
   r   r,   '   r&   zTensorboardLogger.add_figurec                 c   s    d V  d S r   r
   )r   file_or_dirr   artifact_typealiasesr
   r
   r   add_artifact*   s   
zTensorboardLogger.add_artifactc                 C   s,   |  D ]\}}| d|||| qd S N{}/{})itemsr   r   )r   
scope_namescalarsr   keyr#   r
   r
   r   add_scalars-   s   zTensorboardLogger.add_scalarsc                 C   s.   |  D ]\}}| jd|||| qd S r2   )r4   r   r,   r   )r   r5   figuresr   r7   r#   r
   r
   r   add_figures1   s   zTensorboardLogger.add_figuresc              	   C   sb   |  D ]*\}}|jdkr|d}z| jd|||||d W q ty.   t  Y qw d S )Nfloat16float32r3   r'   )r4   dtypeastyper)   r   RuntimeError	traceback	print_exc)r   r5   audiosr   r(   r7   r#   r
   r
   r   
add_audios5   s   



zTensorboardLogger.add_audiosc                 C      | j   d S r   )r   flushr   r
   r
   r   rE   C      zTensorboardLogger.flushc                 C   rD   r   )r   closerF   r
   r
   r   finishF   rG   zTensorboardLogger.finishr   )__name__
__module____qualname__r   r   r!   strfloatintr   r)   r   r,   r1   r8   r:   rC   rE   rI   r
   r
   r
   r   r      s    
r   )r@   torch.utils.tensorboardr    trainer.logging.base_dash_loggerr   r   r
   r
   r
   r   <module>   s    