
    h                     j    S SK r S SKJr  S SKrS SKJrJrJrJ	r	  Sr
S rS rS r\S:X  a  \" 5         gg)	    N)Path)
load_modelnumpy_helperonnx_pb
save_model
   c                    U R                   /nU(       Ga=  UR                  S5      nU" U5        UR                   GH  nUR                   H  nUR                  [
        R                  R                  R                  :X  aF  [        UR                  [
        R                  5      (       d   eUR                  UR                  5        UR                  [
        R                  R                  R                  :X  d  M  UR                   H5  n[        U[
        R                  5      (       d   eUR                  U5        M7     M     GM     U(       a  GM<  g g )Nr   )graphpopnode	attributetyper   AttributeProtoAttributeTypeGRAPH
isinstanceg
GraphProtoappendGRAPHSgraphs)modelfuncgraph_queuer
   r   attrr   s          [/var/www/fran/franai/venv/lib/python3.13/site-packages/onnxruntime/tools/onnx_randomizer.pygraph_iteratorr      s    ;;-K
"UJJD99 6 6 D D J JJ%dffg.@.@AAAA&&tvv.99 6 6 D D K KK![[)!W-?-?@@@@#**1- ) '  +    c                    U R                    H  n[        R                  " U5      nUR                  [        :  d  M/  [
        R                  R                  UR                  5       UR                  5       UR                  S9R                  UR                  5      n[        R                  " X1R                  5      nUR                  U5        M     g )N)size)initializerr   to_arrayr    SIZE_THRESHOLDnprandomuniformminmaxshapeastypedtype
from_arraynameCopyFrom)r
   i_tensorarrayrandom_arrayo_tensors        r   randomize_graph_initializerr3   %   s    %%%%h/::&99,,UYY[%))+EKK,X__`e`k`klL#..|]]KHh' &r   c                     [         R                  " SS9n U R                  S[        SSS9  U R                  S[        SSS9  U R                  S	S
SSS9  U R                  SS
SSS9  U R	                  5       nS nUR
                  (       a~  [        UR                  5      R                  [        UR                  5      R                  :X  a  [        S5      eUR                  (       a"  [        UR                  5      R                  S-   n[        UR                  5      R                  R                  SSS9  [        UR                  UR
                  S9n[        U[         5        [#        UUR                  UR
                  UR                  US9  g )Nz&Randomize the weights of an ONNX model)descriptionz-mTzinput onnx model path)r   requiredhelpz-ozoutput onnx model pathz--use_external_data_formatF
store_truez%Store or Save in external data format)r6   actionr7   z--all_tensors_to_one_filezSave all tensors to one filezNPlease specify output directory with different parent path to input directory.z.data)parentsexist_ok)load_external_data)save_as_external_dataall_tensors_to_one_filelocation)argparseArgumentParseradd_argumentstr
parse_argsuse_external_data_formatr   mparentoRuntimeErrorr>   r-   mkdirr   r   r3   r   )parserargs	data_path
onnx_models       r   mainrO   /   s[   $$1YZF
3<ST
3<TU
$4	   #+	   DI$$<$tvv,"5"55opp''TVV))G3ILdT:DFFt7T7TUJ::;";; $ < <r   __main__)r@   pathlibr   numpyr$   onnxr   r   r   r   r#   r   r3   rO   __name__ r   r   <module>rV      sA       > >
 . ("J zF r   