o
    r::jr                     @  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mZ	 d dl
Z
d dl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rMe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	      named   
   )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'   m/home/nk/hobo-godmode/plappi-mvp/.venv/lib/python3.10/site-packages/onnx/test/model_container_refeval_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   #loc1r   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_regression3   s<   r0   c                   @  s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestLargeOnnxReferenceEvaluatorc                 C  sj   t dt jd}tj|}|d d|i}t j	g dg dg dgt jd}t
|d | d S )	Nr   r   r   )ihk i} i؏ )ipT, i0/ i2 )ix=J iO iHU )dtyper   )r   r   r   r    r!   r   	referenceReferenceEvaluatorrunarraynptassert_allclose)self	containerr   refgotexpectedr'   r'   r(    common_check_reference_evaluatorX   s   z@TestLargeOnnxReferenceEvaluator.common_check_reference_evaluatorc                 C  s   t  }tj|j}| | | t |d  W d    n1 s#w   Y  t	 $}t
j|d}|| tj }|| | | W d    d S 1 sSw   Y  d S )Nz#anymissingkey
model.onnx)r)   r   r,   r.   r%   r>   assertRaises
ValueErrortempfileTemporaryDirectoryospathjoinsaveModelContainerload)r9   model_protor/   tempfilenamecopyr'   r'   r(   $test_large_onnx_no_large_initializerf   s   





"zDTestLargeOnnxReferenceEvaluator.test_large_onnx_no_large_initializerc                 C  s   t  }| | t ,}tj|d}||d tj	
 }|| tj|dd}| | W d    d S 1 s;w   Y  d S )Nr?   Tload_external_data)r0   r>   rB   rC   rD   rE   rF   rG   r   r,   rH   rI   
load_modelr9   r/   rK   rL   rM   loaded_modelr'   r'   r(   test_large_one_weight_filet      



"z:TestLargeOnnxReferenceEvaluator.test_large_one_weight_filec                 C  s   t  }| | t ,}tj|d}||d t	|}| | tj	|dd}| | W d    d S 1 s;w   Y  d S )Nr?   FTrO   )
r0   r>   rB   rC   rD   rE   rF   rG   r   rQ   rR   r'   r'   r(   test_large_multi_files   rU   z6TestLargeOnnxReferenceEvaluator.test_large_multi_filesN)__name__
__module____qualname__r>   rN   rT   rV   r'   r'   r'   r(   r1   W   s
    r1   __main__   )	verbosity)
__future__r   rD   rB   unittestnumpyr   numpy.testingtestingr7   r   onnx.helperonnx.model_containeronnx.numpy_helperonnx.referencer)   r0   TestCaser1   rW   mainr'   r'   r'   r(   <module>   s"   $4