o
    q::jA                     @  s\   d dl mZ d dlZd dlZd dlmZ d dlmZ d dl	m
Z
 dd ZG dd	 d	eZdS )
    )annotationsN)Base)expect)AI_ONNX_PREVIEW_TRAINING_DOMAINc                 C  s   || | }|| d| |  }|	| d|	 ||   }t ||
 }d }|dkr;| t d|	|   d||   }n| }||||   }d| | }|||fS )N   r   )npsqrt)rtxgvhnorm_coefficientnorm_coefficient_postalphabetaepsilong_regularizedv_newh_newh_sqrt
r_adjustedx_newx_final r   g/home/nk/hobo-godmode/plappi-mvp/.venv/lib/python3.10/site-packages/onnx/backend/test/case/node/adam.py
apply_adam   s   $
r   c                   @  s(   e Zd ZedddZedddZdS )	AdamreturnNonec                  C  s   d} d}d}d}t jjdg dg d| |||td}tjdtjd	}tjd
tjd	}tjddgtjd	}tjddgtjd	}tjddgtjd	}	tjddgtjd	}
t|||||	|
| d|||\}}}t	||||||	|
g|||gdt j
tdgd d S )NMbP?ffffff?皙?gHz>r   )RTXGVH)X_newV_newH_newinputsoutputsr   r   r   r   domaindtyper   g333333?gffffff@gGzg      g333333?g@        	test_adamr   r.   r/   nameopset_importsonnxhelper	make_noder   r   arrayfloat32int64r   r   make_opsetid)r   r   r   r   noder	   r
   r   r   r   r   r   r   r   r   r   r   export_adam)   s>   

zAdam.export_adamc                  C  sr  d} d}d}d}t jjdg dg d| |||td}tjd	tjd
}tjdtjd
}tjdgtjd
}tjdgtjd
}tjdgtjd
}	tjdgtjd
}
tjddgtjd
}tjddgtjd
}tjddgtjd
}tjddgtjd
}t|||||	|
| d|||\}}}t||||||| d|||\}}}t	||||||||	||
|g
||||||gdt j
tdgd d S )Nr!   r"   g333333?g{Gz?r   )
r$   r%   X1X2G1G2V1V2H1H2)X1_newX2_newV1_newV2_newH1_newH2_newr-   r#   r1   r   g      ?g      g       @g      ?g      g      @g      $@r3   test_adam_multipler   r5   r8   )r   r   r   r   r@   r	   r
   x1g1v1h1x2g2v2h2x1_newv1_newh1_newx2_newv2_newh2_newr   r   r   export_adam_multipleU   sL   


zAdam.export_adam_multipleN)r   r    )__name__
__module____qualname__staticmethodrA   r_   r   r   r   r   r   (   s
    +r   )
__future__r   numpyr   r9   onnx.backend.test.case.baser   onnx.backend.test.case.noder   	onnx.defsr   r   r   r   r   r   r   <module>   s   