o
    to™i!  ã                   @  s–   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlm	Z
 d dlZd dlZd dlZdd„ Zdd„ ZG dd„ dejƒZed	krIejd
d dS dS )é    )ÚannotationsNc                  C  s  t j dt jjd d g¡} t j dt jjd g¡}t j t j dddgdg¡t j dddgdg¡t j dddgdg¡gd	| g|gt jjt	 
d
¡ t	j¡ d¡ddt jjt	 
d
¡d  t	j¡ d¡ddt jjt	 
d
¡d  t	j¡ d¡ddg¡}t j |¡}t j |¡ |S )NÚXÚYÚMatMulÚAÚXAÚBÚXBÚCÚmmé	   ©éÿÿÿÿé   ©Únameé
   )ÚonnxÚhelperÚmake_tensor_value_infoÚTensorProtoÚFLOATÚ
make_graphÚ	make_nodeÚnumpy_helperÚ
from_arrayÚnpÚarangeÚastypeÚfloat32ÚreshapeÚ
make_modelÚcheckerÚcheck_model)r   r   ÚgraphÚ
onnx_model© r&   úR/home/ubuntu/.local/lib/python3.10/site-packages/onnx/test/model_container_test.pyÚ_linear_regression   s4   ýÿþþø÷r(   c                  C  s*  t j dt jjd d g¡} t j dt jjd g¡}t j t j dddgdg¡t j dddgdg¡t j dddgdg¡gd	| g|gt j d
dt jjd¡t j	j
t d¡ tj¡ d¡ddt j ddt jjd¡g¡}t j |¡}t j |jt d¡d  tj¡ d¡t d¡d  tj¡ d¡dœ¡}| ¡  |S )Nr   r   r   r   r   r   r	   r
   r   ú#loc0)r   r   r   r   r   ú#loc1éd   r   )r)   r*   )r   r   r   r   r   r   r   Úmodel_containerÚmake_large_tensor_protor   r   r   r   r   r   r    r!   Úmake_large_modelr$   r#   )r   r   r$   r%   Úlarge_modelr&   r&   r'   Ú_large_linear_regression2   s<   ýÿÿÿù÷þþr0   c                   @  s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestLargeOnnxc              	   C  sà   t ƒ }t|tjƒsJ ‚tj |j¡}t|tjjƒsJ ‚t 	¡ G}t
j |d¡}| |¡ tj ¡ }|  t¡ |js<J ‚W d   ƒ n1 sFw   Y  | |¡ |jd usWJ ‚tj |j¡ W d   ƒ d S 1 siw   Y  d S )Nú
model.onnx)r(   Ú
isinstancer   Ú
ModelProtor,   r.   r$   ÚModelContainerÚtempfileÚTemporaryDirectoryÚosÚpathÚjoinÚsaveÚassertRaisesÚRuntimeErrorÚmodel_protoÚloadr"   r#   )Úselfr>   r/   ÚtempÚfilenameÚcopyr&   r&   r'   Ú$test_large_onnx_no_large_initializerW   s   


ÿ
"øz2TestLargeOnnx.test_large_onnx_no_large_initializerc                 C  s¦   t ƒ }t|tjjƒsJ ‚t ¡ 9}tj 	|d¡}| 
|d¡}t|tjƒs&J ‚tj ¡ }| |¡ | ¡  tj|dd}tj |¡ W d   ƒ d S 1 sLw   Y  d S )Nr2   T©Úload_external_data)r0   r3   r   r,   r5   r6   r7   r8   r9   r:   r;   r4   r?   r#   Ú
load_modelr"   )r@   r/   rA   rB   Úsaved_protorC   Úloaded_modelr&   r&   r'   Útest_large_one_weight_filef   s   


"øz(TestLargeOnnx.test_large_one_weight_filec           
      C  sú   t ƒ }t|tjjƒsJ ‚t ¡ c}tj 	|d¡}| 
|d¡}t|tjƒs&J ‚t |¡}tj |¡ t |¡D ]'}t |¡r]d}|jD ]}|jdkrVtj |j¡sRJ ‚|d7 }qB|  |d¡ q6tj|dd}	tj |	¡ W d   ƒ d S 1 svw   Y  d S )Nr2   Fr   Úlocationé   TrE   )r0   r3   r   r,   r5   r6   r7   r8   r9   r:   r;   r4   rG   r"   r#   Úext_dataÚ_get_all_tensorsÚuses_external_dataÚexternal_dataÚkeyÚexistsÚvalueÚassertEqual)
r@   r/   rA   rB   rH   rC   ÚtensorÚtestedÚextrI   r&   r&   r'   Útest_large_multi_filess   s*   




€€"ñz$TestLargeOnnx.test_large_multi_filesN)Ú__name__Ú
__module__Ú__qualname__rD   rJ   rX   r&   r&   r&   r'   r1   V   s    r1   Ú__main__é   )Ú	verbosity)Ú
__future__r   r8   r6   ÚunittestÚnumpyr   r   Úonnx.external_data_helperÚexternal_data_helperrM   Úonnx.helperÚonnx.model_containerÚonnx.numpy_helperr(   r0   ÚTestCaser1   rY   Úmainr&   r&   r&   r'   Ú<module>   s    $2ÿ