
     Ng                     t    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             dS dS )	    N)Path)
load_modelnumpy_helperonnx_pb
save_model
   c                    | j         g}|r|                    d          } ||           |j        D ]}|j        D ]}|j        t
          j        j        j        k    r;t          |j
        t
          j                  sJ |                    |j
                   |j        t
          j        j        j        k    r;|j        D ]3}t          |t
          j                  sJ |                    |           4|d S d S )Nr   )graphpopnode	attributetyper   AttributeProtoAttributeTypeGRAPH
isinstanceg
GraphProtoappendGRAPHSgraphs)modelfuncgraph_queuer
   r   attrr   s          ]/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnxruntime/tools/onnx_randomizer.pygraph_iteratorr      s   ;-K
 .""UJ 	. 	.D . .9 6 D JJJ%dfg.@AAAAA&&tv...9 6 D KKK![ . .)!W-?@@@@@#**1----.	  . . . . .    c                    | j         D ]}t          j        |          }|j        t          k    rt
          j                            |                                |	                                |j
                                      |j                  }t          j        ||j                  }|                    |           d S )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//:&&9,,UYY[[%))++EK,XX__`e`kllL#.|X]KKHh'''( (r   c                     t          j        d          } |                     dt          dd           |                     dt          dd           |                     d	d
dd           |                     dd
dd           |                                 }d }|j        rft          |j                  j        t          |j	                  j        k    rt          d          |j        rt          |j	                  j        dz   }t          |j	                  j                            dd           t          |j        |j                  }t          |t                      t#          ||j	        |j        |j        |           d S )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ZZZF
3<STTT
3<TUUU
$4	     #+	     DI$ 4<<$tv,,"555oppp' 	4TV)G3ILLdT:::DFt7TUUUJ::;;;"; $ <     r   __main__)r@   pathlibr   numpyr$   onnxr   r   r   r   r#   r   r3   rO   __name__ r   r   <module>rV      s               > > > > > > > > > > > >
 . . . ( ( (" " "J zDFFFFF r   