o
    wi                     @  sd   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dd	 ZG d
d deZdS )    )annotationsN)Base)expect)AI_ONNX_PREVIEW_TRAINING_DOMAINc                 C  s@   || | }|dkr|nd}	|| |	|  }
|| |
  }||
fS Nr       rtxgvnorm_coefficientalphabetag_regularizedbeta_adjustedv_newx_newr   r   a/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/onnx/backend/test/case/node/momentum.pyapply_momentum   s
   r   c                 C  sH   || | }|dkr|nd}	|| |	|  }
|| |||
    }||
fS r   r   r	   r   r   r   apply_nesterov   s
   r   c                   @  s6   e Zd Zed
ddZed
ddZed
ddZd	S )MomentumreturnNonec               
   C  s   d} d}d}t jjdg dd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|||||| ||\}	}
t	||||||g|	|
gdt j
tdgd d S )NMbP?ffffff?皙?r   RTXGVX_newV_newstandardinputsoutputsr   r   r   modedomaindtyper   333333?ffffff@Gz      333333?@test_momentumr   r)   r*   nameopset_importsonnxhelper	make_noder   nparrayfloat32int64r   r   make_opsetidr   r   r   noder
   r   r   r   r   r   r   r   r   r   export_momentum'   6   
zMomentum.export_momentumc               
   C  s   d} d}d}t jjdg dd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|||||| ||\}	}
t	||||||g|	|
gdt j
tdgd d S )Ng{Gz?r         ?r   r   r%   r&   nesterovr(   r   r-   r   r/   r0   r1   r2   r3   r4   test_nesterov_momentumr   r6   )r:   r;   r<   r   r=   r>   r?   r@   r   r   rA   rB   r   r   r   export_nesterov_momentumO   rE   z!Momentum.export_nesterov_momentumc               
   C  s0  d} d}d}t jjdg dg d| ||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dgtjd
}	tjddgtjd
}
tjddgtjd
}t|||||| ||\}}t|||	|
|| ||\}}t	|||||	||
||g||||gdt j
tdgd d S )Nr   r   g333333?r   )r    r!   X1X2G1G2H1H2)X1_newX2_newV1_newV2_newr'   r(   r   r-   r   rF   g      g       @g      g      @test_momentum_multipler   r6   r9   )r   r   r   rC   r
   r   x1g1v1x2g2v2x1_newv1_newx2_newv2_newr   r   r   export_momentum_multiplew   s>   

z!Momentum.export_momentum_multipleN)r   r   )__name__
__module____qualname__staticmethodrD   rI   r_   r   r   r   r   r   &   s    ''r   )
__future__r   numpyr=   r:   onnx.backend.test.case.baser   onnx.backend.test.case.noder   	onnx.defsr   r   r   r   r   r   r   r   <module>   s   