o
    Ni                     @   s   d dl Z d dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZmZmZ dd ZG dd de jZd	efd
dZd	efddZedkrIe   dS dS )    N)Input	Embedding)Model)CRFModelWithCRFLossModelWithCRFLossDSCLossc                    s*   | j  }t |   fddt|D S )z4
    copied from transformers.modeling_tf_utils
    c                    s$   g | ]\}}|d u r | n|qS N ).0isdynamicr	   >/home/ubuntu/.local/lib/python3.10/site-packages/tests/test.py
<listcomp>   s   $ zshape_list.<locals>.<listcomp>)shapeas_listtf	enumerate)xstaticr	   r   r   
shape_list   s   

r   c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TFTesterc                 C   s   t t jdddgd }t }||}t|d ddgks!J t|d g dks-J t|d dgks8J t|d ddgksDJ d S )	Nr      )   	   d   r   r   r   r      r   nparrayrandomuniformr   r   selfr   crfresultr	   r	   r   test_crf_no_kernel   s   zTFTester.test_crf_no_kernelc                 C   s   t t jdddgd }tdd}||}t|d ddgks#J t|d g dks/J t|d	 dgks:J t|d ddgksFJ d S )
Nr   r   )r      r   r   )unitsr   r   r   r   r$   r	   r	   r   test_crf_kernel   s   
zTFTester.test_crf_kernelc                 C   sR   t g dd gd }t g dd gd }td}|j||dddd	d
 d S )N   r   r   r   r   r   r   r   r   r-      皙?r   r   yepochs
batch_sizevalidation_splitverbose)r    r!   	get_modelfit)r%   r   r2   modelr	   r	   r   test_model_training(   s   zTFTester.test_model_trainingc                 C   s    t d}|g dd g d S )Nr   r,   r   )r7   predictr%   r9   r	   r	   r   test_model_inference.   s   zTFTester.test_model_inferencec                 C   s4   t d}|g dd g |d |d d S )Nr   r,   r   ztests/1ztests/model.h5)r7   r;   savesave_weightsr<   r	   r	   r   test_save_model2   s   
zTFTester.test_save_modelc                 C   sr   ddl m} tg dd gd }tg dd gd }|d}|| td}|j||d	d
ddd d S )Nr   experimentalr,   r   r   r.   mixed_float16r   r-   r/   r0   r1   ) tensorflow.keras.mixed_precisionrB   r    r!   Policy
set_policyr7   r8   )r%   mixed_precisionr   r2   policyr9   r	   r	   r   test_mixed_precison8   s   

zTFTester.test_mixed_precisonc                 C   sf   t g dd gd }t g dd gd }td}t|}|jdd |j||dd	d
dd d S )Nr,   r   r   r.   r   adam	optimizerr-   r/   r0   r   r1   )r    r!   get_base_modelr   compiler8   )r%   r   r2   
base_modelr9   r	   r	   r   test_model_dscA   s   zTFTester.test_model_dscc                 C   s   ddl m} tg dd gd }tg dd gd }|d}|| td}t|}|jd	d
 |j	||ddddd d S )Nr   rA   r,   r   r   r.   rC   r   rJ   rK   r-   r/   r0   r1   )
rD   rB   r    r!   rE   rF   rM   r   rN   r8   )r%   rG   r   r2   rH   rO   r9   r	   r	   r   test_mixed_precison_dscI   s   

z TFTester.test_mixed_precison_dscN)__name__
__module____qualname__r(   r+   r:   r=   r@   rI   rP   rQ   r	   r	   r	   r   r      s    			r   r*   c                 C   s    t | }t|}|jdd |S )NrJ   rK   )rM   r   rN   )r*   rO   r9   r	   r	   r   r7   U   s   r7   c                 C   sF   t ddd}tddddd|}t| dd	d
}||}t||d}|S )Nr   int32)r   dtype
      T)	trainable	mask_zerofloat32r&   )r*   rV   name)inputsoutputs)r   r   r   r   )r*   r]   outputr&   rO   r	   r	   r   rM   \   s   rM   __main__)unittestnumpyr    
tensorflowr   tensorflow.keras.layersr   r   tensorflow.keras.modelsr   tf2crfr   r   r   r   TestCaser   intr7   rM   rR   mainr	   r	   r	   r   <module>   s    	A	