o
    wiB                     @  s4   d dl mZ d dlZd dlmZ G dd deZdS )    )annotationsN)OpRunc                   @  s   e Zd Z	dddZdS )	MaxUnpoolNc                 C  s  t |jd }|dkrtd| d|p| j}|p| j}|p!| j}|d u r-dd |D }|d u r>dd tt |d D }tjt |jftj	d}|jd	 |d	< |jd
 |d
< tt |D ]#}	|j|	d  d
 ||	  ||	 |t ||	    ||	  ||	d < q^|d u r|}
n|}
t
|j}tjt
|f|jd}| }| }t|D ]
}|| ||| < q|t|}tj|
|jd}tdd |D }|||< |fS )N      zUnsupported pooling size z for operator MaxUnpool.c                 S     g | ]}d qS )    .0dr	   r	   ]/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/onnx/reference/ops/op_max_unpool.py
<listcomp>       z"MaxUnpool._run.<locals>.<listcomp>c                 S  r   )r   r	   r
   r	   r	   r   r      r   )dtyper   r   c                 s  s    | ]}t d |V  qdS )r   N)slice)r   ir	   r	   r   	<genexpr>8   s    z!MaxUnpool._run.<locals>.<genexpr>)lenshapeNotImplementedErrorkernel_shapepadsstridesrangenpemptyint64prodzerosr   flattenreshapetuple)selfXindicesoutput_shaper   r   r   pooling_dimsinferred_shapedimr   total_elementsYI_dataX_datacur_elemresslicesr	   r	   r   _run   sH   



zMaxUnpool._run)NNNN)__name__
__module____qualname__r1   r	   r	   r	   r   r      s    r   )
__future__r   numpyr   onnx.reference.op_runr   r   r	   r	   r	   r   <module>   s   