a
    d                     @   sx   d dl mZmZmZ d dlZdd Zdejjeeej	 e
e
e
e
eeeeef ee e
e
ee
 ee ee dd	d
ZdS )    )OptionalTupleListNc                 C   sJ   dd l }| }|| |}| d j}|g || i}|d }|S )Nr   )onnxruntimeZSessionOptionsZInferenceSession
get_inputsnamerunnumpy)Z	onnx_fileexample_inputr   Zsess_optionssessionZ
input_nameoutput r   X/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/timm/utils/onnx.pyonnx_forward   s    r   FT@   )modeloutput_filer
   trainingverbosecheckcheck_forward
batch_size
input_sizeopsetdynamic_sizeaten_fallbackkeep_initializersinput_namesoutput_namesc                 C   sl  dd l }|r tj jj}|   ntj jj}|   |d u rl|sXt| dsLJ | j	d}tj
|f| |d}| |}|p|dg}|pdg}ddiddid}|
rd	|d d
< d|d d< |rtj jj}n
tj jj}tj j| |||d||||||	|d}|rh||}|jj|dd |rh|shdd l}t||}|jj|j |dd |jj|j |j dd d S )Nr   default_cfgr   )Zrequires_gradinput0output0batch)r    r!   height   width   T)	r   Zexport_paramsr   r   r   Zkeep_initializers_as_inputsdynamic_axesZopset_versionZoperator_export_type)Z
full_check)decimal   )onnxtorchZTrainingModeZTRAININGZtrainZEVALevalhasattrr   getZrandnZOperatorExportTypesZONNX_ATEN_FALLBACKZONNXZ_exportloadcheckerZcheck_modelr	   r   ZtestingZassert_almost_equaldata)r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r*   Ztraining_modeZoriginal_outr'   Zexport_typeZ	torch_outZ
onnx_modelnpZonnx_outr   r   r   onnx_export   sV    


	




r3   )NFFTFr   NNFFNNN)typingr   r   r   r+   r   nnModulestrZTensorboolintr3   r   r   r   r   <module>   s@                