o
    wi!                     @  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&   [/home/ubuntu/sommelier/.venv/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   #loc1d   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