
    g                     h    d dl Z d dlmZ d dlZd dlmZmZmZm	Z	 dZ
d Zd Zd Zedk(  r e        yy)	    N)Path)
load_modelnumpy_helperonnx_pb
save_model
   c                 h   | j                   g}|r"|j                  d      } ||       |j                  D ]  }|j                  D ]  }|j                  t
        j                  j                  j                  k(  rAt        |j                  t
        j                        sJ |j                  |j                         |j                  t
        j                  j                  j                  k(  s|j                  D ]/  }t        |t
        j                        sJ |j                  |       1   |r!y y )Nr   )graphpopnode	attributetyper   AttributeProtoAttributeTypeGRAPH
isinstanceg
GraphProtoappendGRAPHSgraphs)modelfuncgraph_queuer
   r   attrr   s          V/var/www/openai/venv/lib/python3.12/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&&tvv.99 6 6 D D K KK![[)!W-?-?@@@#**1- ) '      c                    | j                   D ]  }t        j                  |      }|j                  t        kD  s,t
        j                  j                  |j                         |j                         |j                        j                  |j                        }t        j                  ||j                        }|j                  |        y )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#..|X]]KHh' &r   c                  2   t        j                  d      } | j                  dt        dd       | j                  dt        dd       | j                  d	d
dd       | j                  dd
dd       | j	                         }d }|j
                  rxt        |j                        j                  t        |j                        j                  k(  rt        d      |j                  r"t        |j                        j                  dz   }t        |j                        j                  j                  dd       t        |j                  |j
                        }t        |t                t#        ||j                  |j
                  |j                  |       y )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   