o
    soi$                     @  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   T/home/ubuntu/.local/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  sp  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_new)r-   r.   r   r   r   r/   r#   r0   r   g      ?g      g       @g      ?g      g      @g      $@r2   test_adam_multipler   r4   r7   )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   sJ   


zAdam.export_adam_multipleN)r   r    )__name__
__module____qualname__staticmethodr@   r^   r   r   r   r   r   (   s
    +r   )
__future__r   numpyr   r8   onnx.backend.test.case.baser   onnx.backend.test.case.noder   	onnx.defsr   r   r   r   r   r   r   <module>   s   