
    &Vf                         d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	  ed           G d de                      Z
dS )    N)keras_export)Callback)
file_utilszkeras.callbacks.CSVLoggerc                   <     e Zd ZdZd	 fd	Zd
dZd
dZd
dZ xZS )	CSVLoggeraC  Callback that streams epoch results to a CSV file.

    Supports all values that can be represented as a string,
    including 1D iterables such as `np.ndarray`.

    Args:
        filename: Filename of the CSV file, e.g. `'run/log.csv'`.
        separator: String used to separate elements in the CSV file.
        append: Boolean. True: append if file exists (useful for continuing
            training). False: overwrite existing file.

    Example:

    ```python
    csv_logger = CSVLogger('training.log')
    model.fit(X_train, Y_train, callbacks=[csv_logger])
    ```
    ,Fc                     t                                                       || _        t          j        |          | _        || _        d | _        d | _        d| _	        d S )NT)
super__init__sepr   path_to_stringfilenameappendwriterkeysappend_header)selfr   	separatorr   	__class__s       [/var/www/html/software/conda/lib/python3.11/site-packages/keras/src/callbacks/csv_logger.pyr   zCSVLogger.__init__    sU    "1(;;	!    Nc                 Z   | j         rt          j        | j                  rft          j        | j        d          5 }t          t          |                                                     | _        d d d            n# 1 swxY w Y   d}nd}t          j        | j        |          | _	        d S )Nraw)
r   r   existsr   Fileboollenreadliner   csv_file)r   logsfmodes       r   on_train_beginzCSVLogger.on_train_begin)   s    ; 	 // E_T]C88 EA-1#ajjll2C2C-D-D)DD&E E E E E E E E E E E E E E EDDD"t<<s   5A<<B B c                     pi d  j         vt                                                      _         d} j         D ]}|                    d          rd} n|s) j                             d  j         D                         j        sf G  fddt
          j                  }dg j         z   }t          j         j        ||	           _         j	        r j        
                                 t          j        d|i          }|                    fd
 j         D                         j                            |            j                                         d S )Nc                    t          | t          j                  o
| j        dk    }t          | t                    r| S t          | t
          j        j                  r.|s,dd                    t          t          |                      dS | S )Nr   z"[z, z]")

isinstancenpndarrayndimstrcollectionsabcIterablejoinmap)kis_zero_dim_ndarrays     r   handle_valuez,CSVLogger.on_epoch_end.<locals>.handle_value6   s    ",Q
";";"K!!S!! 1ko677+ 9TYYs3{{338888r   Fval_Tc                     g | ]}d |z   S )r5    ).0r2   s     r   
<listcomp>z*CSVLogger.on_epoch_end.<locals>.<listcomp>L   s    !@!@!@&1*!@!@!@r   c                       e Zd Z j        ZdS )-CSVLogger.on_epoch_end.<locals>.CustomDialectN)__name__
__module____qualname__r   	delimiter)r   s   r   CustomDialectr;   P   s         H			r   r@   epoch)
fieldnamesdialectc              3   Z   K   | ]%}|                      |d                     fV  &dS )NAN)get)r8   keyr4   r"   s     r   	<genexpr>z)CSVLogger.on_epoch_end.<locals>.<genexpr>\   sQ       
 
9<S,,txxT22334
 
 
 
 
 
r   )r   sorted
startswithextendr   csvexcel
DictWriterr!   r   writeheaderr-   OrderedDictupdatewriterowflush)	r   rA   r"   val_keys_foundrG   r@   rB   row_dictr4   s	   ` `     @r   on_epoch_endzCSVLogger.on_epoch_end3   s   zr
	 
	 
	 9tyy{{++DI #Ny  >>&)) %)NE " B	  !@!@di!@!@!@AAA{ 	*% % % % % % %	 % % % "TY.J.*m  DK ! *'')))*GU+;<< 
 
 
 
 
@D	
 
 
 	
 	
 	
 	X&&&r   c                 F    | j                                          d | _        d S N)r!   closer   )r   r"   s     r   on_train_endzCSVLogger.on_train_endb   s!    r   )r   FrX   )	r<   r=   r>   __doc__r   r%   rV   rZ   __classcell__)r   s   @r   r   r      s         &" " " " " "= = = =- - - -^       r   r   )r-   rL   numpyr)   keras.src.api_exportr   keras.src.callbacks.callbackr   keras.src.utilsr   r   r7   r   r   <module>ra      s        



     - - - - - - 1 1 1 1 1 1 & & & & & & )**X X X X X X X +*X X Xr   