o
    1j;                     @   s<   d dl Z d dlZddlmZ ddlmZ G dd deZdS )    N   abspath   )
BaseConfigc                   @   s   e Zd Zdd Zdd Zdd Zdd Zd'd
dZd'ddZd(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!d" Zd#efd$d%Zd&S ))
PP3DConfigc                    s&    fdd  || j }| | d S )Nc                    sD   |   D ]\}}t|tr||v r ||| ||< q|||< q|S N)items
isinstancedict)Z	dict_fromZdict_tokeyval_merge_config_dicts k/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddlex/repo_apis/Paddle3D_api/pp3d_config.pyr      s
   
z.PP3DConfig.update.<locals>._merge_config_dicts)r   reset_from_dict)selfZdict_like_objdict_r   r   r   update   s   
zPP3DConfig.updatec                 C   sP   t |dd}tj|tjd}W d    n1 sw   Y  |}| | d S )Nrutf-8)Loader)codecsopenyamlloadZ
FullLoaderr   )r   config_pathfileZdicr   r   r   r   r   '   s
   zPP3DConfig.loadc                 C   sB   t |ddd}t| j| W d    d S 1 sw   Y  d S )Nwr   )encoding)r   r   dumpr   )r   r   fr   r   r   r!   -   s   "zPP3DConfig.dumpc                 C   sV   d| vrt d| jd dkr|| jd< d S | jd dkr$|| jd< d S || jd< d S )	Nlr_schedulerzKNot able to update learning rate, because no LR scheduler config was found.typeZOneCycleZlr_maxZOneCycleWarmupDecayLrZbase_learning_ratelearning_rate)RuntimeErrorr#   r   r%   r   r   r   update_learning_rate1   s   zPP3DConfig.update_learning_ratetrainc                 C   ,   |dkr|  d| d S tdt| d)Nr)   
batch_sizezSetting `batch_size` in  mode is not supported.set_val
ValueErrorrepr)r   r+   moder   r   r   update_batch_size?   s
   zPP3DConfig.update_batch_sizec                 C   r*   )Nr)   epochszSetting `epochs` in r,   r-   )r   r3   r1   r   r   r   update_epochsG   s   zPP3DConfig.update_epochsFc                 C   s   t r   )NotImplementedError)r   Zweight_pathZis_backboner   r   r   update_pretrained_weightsM   s   z$PP3DConfig.update_pretrained_weightsc                 C   s    d| v r| j S d| v sJ | jS Nitersr3   )r8   r3   r   r   r   r   get_epochs_itersP   s   zPP3DConfig.get_epochs_itersc                 C   s@   d| vs	d| j vrdS | j d }t|tr|d }t|ts|S )Nr#   r%   g-C6?)r#   r
   r   )r   lrr   r   r   get_learning_rateW   s   


zPP3DConfig.get_learning_ratec                 C   s   d| v r| j S dS )Nr+      )r+   )r   r1   r   r   r   get_batch_sizea   s   zPP3DConfig.get_batch_sizec                 C   s<   d| v sJ dd| j v r| j d S d| j v sJ | j d S )Nfinetune_config4QAT training yaml should contain finetune_config keyr8   r3   r?   r9   r   r   r   get_qat_epochs_itersh   s   



zPP3DConfig.get_qat_epochs_itersc                 C   sV   d| v sJ d| j }d|v sd|jvrdS |jd }t|tr)|d }t|ts |S )Nr?   r@   r#   r%   gMb ?)r?   r#   r
   r   )r   cfgr;   r   r   r   get_qat_learning_rater   s   



z PP3DConfig.get_qat_learning_ratec                 C      || j d< d S )NZwarmup_stepsr#   )r   Zstepsr   r   r   update_warmup_steps      zPP3DConfig.update_warmup_stepsc                 C   rE   )NZend_lrrF   r'   r   r   r   update_end_lr   rH   zPP3DConfig.update_end_lrc                 C   s(   |  d| d| v r|  dd  d S d S r7   )r.   r   r8   r   r   r   update_iters   s   zPP3DConfig.update_itersc                 C   s&   || j d< d| j v rd | j d< d S d S r7   rA   rJ   r   r   r   update_finetune_iters   s   

z PP3DConfig.update_finetune_iterssave_dirc                 C   s   t || d< d S )NrM   r   )r   rM   r   r   r   update_save_dir   s   zPP3DConfig.update_save_dirN)r)   )F)__name__
__module____qualname__r   r   r!   r(   r2   r4   r6   r:   r<   r>   rB   rD   rG   rI   rK   rL   strrN   r   r   r   r   r      s$    





r   )r   r   Z
utils.miscr   baser   r   r   r   r   r   <module>   s
   