Ë
    Ž\;jœ  ã                   ó$  — d dl Z d dlZd dlmZ d dlZd dlZd dlmZ d dl	m
Z
mZmZmZmZmZ d dlmZ  eee j&                  d¬«      ZeZeZe
j.                  Ze
ZeZeZd„ Zd	„ Zd
 e«       fdedededededede dee   fd„Z!ee_"        ee_#        y)é    N)ÚSet)Úcore)ÚAnalysisConfigÚPaddleDTypeÚPaddleInferPredictorÚPaddleInferTensorÚPaddlePlaceÚconvert_to_mixed_precision_bind)Ú
get_loggerz&%(asctime)s-%(levelname)s: %(message)s)Úfmtc                 óÒ   — t        |t        j                  «      s1t        |t        «      r3t	        |«      dkD  r%t        |d   t
        «      r| j                  |«       yt        d«      ‚)zA
    Support input type check based on tensor.copy_from_cpu.
    r   zHIn copy_from_cpu, we only support numpy ndarray and list[str] data type.N)Ú
isinstanceÚnpÚndarrayÚlistÚlenÚstrÚ_copy_from_cpu_bindÚ	TypeError©ÚselfÚdatas     úaG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\paddle/inference/wrapper.pyÚtensor_copy_from_cpur   -   sQ   € ô �$œŸ
™
Ô#Ü�4œÔ¤3 t£9¨q¢=´ZÀÀQÁÌÔ5Mà× Ñ  Õ&äØVó
ð 	
ó    c                 ó:  — t        |t        j                  «      r| j                  |«       yt        |t        j
                  «      r| j                  |«       yt        |t        j                  j                  j                  «      rt        d«      ‚t        d«      ‚)zG
    Support input type check based on tensor.share_external_data.
    z¿The interface 'share_external_data' can only be used in dynamic graph mode. Maybe you called 'paddle.enable_static()' and you are in static graph mode now. Please use 'copy_from_cpu' instead.z=In share_external_data, we only support Tensor and LoDTensor.N)r   r   Ú	LoDTensorÚ_share_external_data_bindÚpaddleÚTensorÚ'_share_external_data_paddle_tensor_bindÚbaseÚ	frameworkÚVariabler   r   s     r   Útensor_share_external_datar%   ;   sz   € ô �$œŸ™Ô'Ø×&Ñ& tÕ,Ü	�Dœ&Ÿ-™-Ô	(Ø×4Ñ4°TÕ:Ü	�Dœ&Ÿ+™+×/Ñ/×8Ñ8Ô	9Üð2ó
ð 	
ô ØKó
ð 	
r   TÚ
model_fileÚparams_fileÚmixed_model_fileÚmixed_params_fileÚmixed_precisionÚbackendÚkeep_io_typesÚ
black_listc                 óØ  — |t         j                  u r)t        j                  «       st        j                  d«       t        j                  j                  |«      }	t        |«      dk7  rt        j                  j                  |«      n|	}
t        j                  j                  |
«      st        j                  |
«       |j                  dt        «       «      }t        | ||||||||«	       y)aâ  
    Convert a fp32 model to mixed precision model.

    Args:
        model_file: fp32 model file, e.g. inference.pdmodel.
        params_file: fp32 params file, e.g. inference.pdiparams.
        mixed_model_file: The storage path of the converted mixed-precision model.
        mixed_params_file: The storage path of the converted mixed-precision params.
        mixed_precision: The precision, e.g. PrecisionType.Half.
        backend: The backend, e.g. PlaceType.GPU.
        keep_io_types: Whether the model input and output dtype remains unchanged.
        black_list: Operators that do not convert precision.
        kwargs: Supported keys including 'white_list'.
            - white_list: Operators that do convert precision.
    zOYou shoule use PaddlePaddle compiled with GPU when backend set to PlaceType.GPUr   Ú
white_listN)Ú	PlaceTypeÚGPUr   Úis_compiled_with_cudaÚ_loggerÚerrorÚosÚpathÚdirnamer   ÚexistsÚmakedirsÚgetÚsetr
   )r&   r'   r(   r)   r*   r+   r,   r-   ÚkwargsÚmixed_model_dirnameÚmixed_params_dirnamer/   s               r   Úconvert_to_mixed_precisionr?   O   sÀ   € ð4 ”)—-‘-Ñ¬×(BÑ(BÔ(DÜ�‰Ø]ô	
ô Ÿ'™'Ÿ/™/Ð*:Ó;Ðô Ð Ó! QÒ&ô 	�‰�‰Ð)Ô*à ð ô
 �7‰7�>‰>Ð.Ô/Ü
�‰Ð(Ô)Ø—‘˜L¬#«%Ó0€JÜ#ØØØØØØØØØõ
r   )$Úloggingr5   Útypingr   Únumpyr   r   Úpaddle.baser   Úpaddle.base.corer   r   r   r   r	   r
   Úpaddle.base.log_helperr   Ú__name__ÚINFOr3   ÚDataTyper0   Ú	PrecisionÚPrecisionTypeÚConfigr    Ú	Predictorr   r%   r;   r   Úboolr?   Úcopy_from_cpuÚshare_external_data© r   r   Ú<module>rQ      sà   ðó Û 	Ý ã ã Ý ÷÷ õ .á
Øˆg�l‰lÐ Hô€ð €Ø€	Ø×(Ñ(€Ø	€Ø	€Ø €	ò
ò
ð6 Ù›5ñ5Øð5àð5ð ð5ð ð	5ð
 #ð5ð ð5ð ð5ð �C‘ó5ðp ,€Ô Ø7€Õ r   