
    Vpfn6                    P   U d Z ddlmZ ddlmZmZ ddlZddlZddlm	Z	 ddl
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	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlZddlmZ ddlZej          G d d                      Z!i Z"de#d<   d$dZ$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d  Z/d! Z0d" Z1d# Z2d$d%gd&ej3        fgfd'gd(ej3        fgffD ]\  Z4Z5 e$e%d)e4e5*           d$d+d,gd-ej6        fd.ej6        fgfd/d0gd1ej6        fd2ej6        fgffD ]\  Z4Z5 e$e&d3e4e5*           d$d%gd4ej3        fgfd5gd6ej3        fgffD ]\  Z4Z5 e$e'd7e4e5*            e$e)d89            e$e*d:9           d$d%gd;ej3        fgfd'gd<ej3        fgffD ]\  Z4Z5 e$e+d=e4e5*           d$d>d>gd?ej3        fd@ej3        fgfdAdBgdCej3        fdDej3        fgfdBdAgdEej3        fdCej3        fgffD ]\  Z4Z5 e$e,dFe4e5*           d$d+gdGej3        fgffD ]"\  Z4Z5dHe/fdIe0ffD ]\  Z7Z8 e$e8e7e4e5*           #d$d+gdJz  dGej3        fgdJz  fdKgdJz  dLej3        fgdJz  ffD ]\  Z4Z5 e$e1dMe4e5*           d$d%gdNej3        fgfd5gdOej3        fgffD ]\  Z4Z5 e$e2dPe4e5*           dS )QzAll the models to convert.    )annotations)CallableSequenceN)Any)actor_critic)bilstm_classifier)cnn)gnn)resnet)seq2seq_lstm)transformer_lm1b)transformer_nlp_seq)transformer_wmt)vae)randomc                      e Zd ZU ded<   ded<   ded<   ded<   d	Zd
ed<   dZded<   dZded<   d Zed             Z	d Z
dS )ModelHarnessstrnamezCallable[..., Any]applyzdict[str, Any]	variableszSequence[np.ndarray]inputsg-C6?floatrtolNzSequence[str | None] | Nonepolymorphic_shapeszSequence[tf.TensorSpec] | Nonetensor_specc                ^    t          | j                  t          | j                  k    sJ d S N)boolr   r   )selfs    k/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/jax/experimental/jax2tf/tests/model_harness.py__post_init__zModelHarness.__post_init__6   s/    '((D1A,B,BBBBBBB    c                n    d }| j         r| j         S t          j                            || j                  S )Nc                z    t          j        | j        t           j                            | j                            S r   )tf
TensorSpecshapedtypesas_dtypedtype)xs    r!   _to_tensorspecz7ModelHarness.tf_input_signature.<locals>._to_tensorspec<   s(    ]17BI$6$6qw$?$?@@@r#   )r   jax	tree_utiltree_mapr   )r    r-   s     r!   tf_input_signaturezModelHarness.tf_input_signature:   sE    A A A  A]##NDK@@@r#   c                .     | j         | j        g|R i |S r   )r   r   )r    argskwargss      r!   apply_with_varszModelHarness.apply_with_varsD   s&    4:dn6t666v666r#   )__name__
__module____qualname____annotations__r   r   r   r"   propertyr1   r5    r#   r!   r   r   ,   s         )))$48888804+4444C C C A A 8A7 7 7 7 7r#   r   z(dict[str, Callable[[str], ModelHarness]]ALL_HARNESSESc           	         |r)|dt          j        ddt          |                    z   z  }|rd |D             }t          j        | |||          }|t
          v rt          d| d          |t
          |<   dS )	zPartially apply harness in order to create variables lazily.

  Note: quotes and commas are stripped from `name` to ensure they can be passed
        through the command-line.
  _z
(?:'|\"|,) c                >    g | ]\  }}t          j        ||          S r;   )r&   r'   ).0specr+   s      r!   
<listcomp>z!_make_harness.<locals>.<listcomp>U   s(    OOO;4BM$..OOOr#   )r   r   r   zHarness z exists alreadyN)resubr   	functoolspartialr<   
ValueError)
harness_fnr   poly_shapestensor_specs
partial_fns        r!   _make_harnessrM   L   s      >C"&C,<,<====D POO,OOOL $	     *
 
]
5555
6
66"-r#   c                    t          j        d          }t          j        dt          j                  }|                    t          j        d          |          }t          | |j	        ||gfi |S )N   )num_outputs)   T   rR      r   )
r   ActorCriticnpzerosfloat32initr   PRNGKeyr   r   r   r4   modelr,   r   s        r!   _actor_critic_harnessr\   c   se    

"q
1
1
1%h~rz**!jj**A..)	dEKQC	B	B6	B	BBr#   c                r   t          j        dddddd          }t          j        g dg dgt          j                  }t          j        ddgt          j                  }|                    t          j        d	          ||d
          }t          j	        |j
        d
          }t          | ||||gfi |S )N   rQ              )embedding_sizehidden_size
vocab_sizeoutput_sizedropout_rateword_dropout_rate)   rS   r^   )rg      r^   rg   r   T)deterministic)r   TextClassifierrU   arrayint32rX   r   rY   rF   rG   r   r   )r   r4   r[   r,   lengthsr   r   s          r!   _bilstm_harnessrn   j   s    

*
 
 
 
% 	h			999%rx00!HaVRX&&'jj**AwdjKK)

EKt
<
<
<%	dE9q'l	E	Ef	E	EEr#   c                    t          j                    }t          j        dt          j                  }|                    t          j        d          |          }t          | |j	        ||gfi |S )N)rQ      rp   rQ   r   )
r	   CNNrU   rV   rW   rX   r   rY   r   r   rZ   s        r!   _cnn_harnessrr   }   s]    
'))%h~rz**!jj**A..)	dEKQC	B	B6	B	BBr#   c                    t          j        dd          } t          j        dd          }t          j        |           }t          j        |          }| j        d         }d}t	          j        | |t          j        |t           j                  t          j        |t           j                  t          j        ||f          t          j        ||f          t          j        ||f                    }|S )	Nr^      rS      r   
   )r+   )n_noden_edgesenders	receiversnodesedgesglobals)	rU   arangesumr(   jraphGraphsTuplerV   rl   ones)rw   rx   total_n_nodetotal_n_edgen_graphfeature_dimgraphss          r!   _get_gnn_graphsr      s    9Q&9Q&,,LO'+h|28444BH555G\;/00HlK011h-..  & 
-r#   c                    t          j        d          t          j        d          d}t                      }t          j        ddddd          }|                    ||          }t          | |j        ||gfd	d
i|S )Nr   rQ   paramsdropout   rg      T)latent_sizenum_mlp_layersmessage_passing_stepsoutput_globals_sizeuse_edge_modelr   g-C6*?)r   rY   r   r
   GraphNetrX   r   r   r   r4   rngsr   r[   r   s         r!   _gnn_harnessr      s     q!!""
 
$ &
,  % jjv&&)	dEKVH 
  
 4 
 
  
   r#   c                    t          j        d          t          j        d          d}t                      }t          j        dddd          }|                    ||          }t          | |j        ||gfi |S )Nr   rQ   r   r   rg   )r   r   r   r   )r   rY   r   r
   GraphConvNetrX   r   r   r   s         r!   _gnn_conv_harnessr      s     q!!""
 
$ &

	  %
 jjv&&)	dEKVH	G	G	G	GGr#   c                *   t          j        dt          j                  }t          j        dt          j                  }|                    t          j        d          |          }t          j	        |j
        dd          }t          | |||gfi |S )Nrg   )num_classesr+   )rO      r   r^   r   F)trainmutable)r   ResNet50rU   rW   rV   rX   r   rY   rF   rG   r   r   )r   r4   r[   r,   r   r   s         r!   _resnet50_harnessr      s    
/arz
:
:
:%h~rz**!jj**A..)

EKue
D
D
D%	dE9qc	<	<V	<	<<r#   c                   t          j        ddd          }t          j        dt          j                  }t          j        dt          j                  }t          j        d          t          j        d          d	}||g} |j        |g|R  }t          j	        |j
        d
t          j        d          i          }t          | |||fi |S )NTrg   rS   )teacher_forcerb   rc   rQ   rg   rS   rQ   r^   rS   r   rQ   )r   lstmr   )r   )r   Seq2seqrU   rV   rW   r   rY   rX   rF   rG   r   r   )	r   r4   r[   encoder_inputsdecoder_inputsr   xsr   r   s	            r!   _seq2seq_lstm_harnessr      s    

TqQ
O
O
O%8Irz22.8Irz22.q!!nQ
 
$ 	'"ej####)

EKvv~a7H7H.I
J
J
J%	dE9b	;	;F	;	;;r#   c                 4    t          dddddddddd
  
        S )NrO   rS   rQ   rg   r`   )
rc   output_vocab_sizeemb_dim	num_heads
num_layersqkv_dimmlp_dimmax_lenre   attention_dropout_rate)dictr;   r#   r!   _min_transformer_kwargsr      s7    	!

# 

# 

# 
#r#   c                 L    t          dddd          } i | t                      S )NTF)decoderi   logits_via_embeddingshare_embeddings)r   r   )r4   s    r!   _full_transformer_kwargsr      s;     	  &
 
1F	0-//	00r#   c                T   t          j        di t                      }t          j        |          t	          j        dt          j                  }t          j        t          j	        d                    \  }
                    ||          }fd}t          | |||gfi |S )Nconfigrg   rQ   r   c                 0     j         | didgd\  }}|S )Ncache)r   r   r   )r3   outputr>   r[   rng2s      r!   r   z(_transformer_lm1b_harness.<locals>.apply   s*    T$'KKKIFAMr#   r;   )lm1bTransformerConfigr   TransformerLMrU   rV   rW   r   splitrY   rX   r   )	r   r4   r   r,   rng1r   r   r[   r   s	          @@r!   _transformer_lm1b_harnessr      s    !??$<$>$>??&

F
+
+
+%hvrz""!|FN1--..*$jjq!!)     
 
dE9qc	<	<V	<	<<r#   c                P   t          j        di t                      }t          j        |          }t	          j        dt          j                  }|                    t          j	        d          |d          }t          j        |j        d          }t          | |||gfi |S )Nr   r   r   F)r   r;   )nlp_seqr   r   TransformerrU   rV   rW   rX   r   rY   rF   rG   r   r   )r   r4   r   r[   r,   r   r   s          r!   _transformer_nlp_seq_harnessr      s    $AA'>'@'@AA&

V
,
,
,%hvrz""!jj**AUj;;)

EKu
5
5
5%	dE9qc	<	<V	<	<<r#   c                &   t          j        di t                      }t          j        |          t	          j        dt          j                  }                    t          j	        d          ||          }fd}t          | ||||gfi |S )Nr   r   r   c                 *     j         | ddgi\  }}|S )Nr   r   r   )r3   r   r>   r[   s      r!   r   z'_transformer_wmt_harness.<locals>.apply  s$    T5G955IFAMr#   r;   )wmtr   r   r   rU   rV   rW   rX   r   rY   r   )r   r4   r   r,   r   r   r[   s         @r!   _transformer_wmt_harnessr      s     >>#;#=#=>>&
/
(
(
(%hvrz""!jj**Aq11)    
 
dE9q!f	?	?	?	??r#   c                   t          j        d          t          j        dt          j                  }t          j        t          j        d                    \  }}                    |||          }fd}t          | |||gfi |S )Nr^   )latents)rQ   rO   rO   r^   r   c                >                         | |j                  S )N)method)r   generate)vr,   r[   s     r!   <lambda>z_vae_harness.<locals>.<lambda>  s    %++a5>+BB r#   )
r   VAErU   rV   rW   r   r   rY   rX   r   )r   r4   r,   r   r   r   r   r[   s          @r!   _vae_harnessr     s    
'!


%h|RZ((!|FN1--..*$jjq$'')BBBB(	dHi!	?	?	?	??r#   )NNz(b, ...))NrR   rR   rS   z(_, 4*b, 4*b, _))rQ   NNrS   zflax/actor_critic)rI   r   rJ   rK   z(b, _)z(_,))Nr^   )rg   z(_, _)z(b,))rg   r^   r   zflax/bilstm)Nrp   rp   rQ   z(_, b, b, _))rQ   NNrQ   zflax/cnnzflax/gnn)rI   r   zflax/gnn_conv)Nr   r   r^   )rO   NNr^   zflax/resnet50z	(b, _, _))Nrg   rS   )Nr^   rS   z	(_, b, _)z	(_, _, _))rQ   NrS   r   r   zflax/seq2seq_lstm)NrQ   z	flax/lm1bzflax/nlp_seqrg   z(_, b))rQ   Nzflax/wmt)NrO   rO   r^   )rQ   NNr^   zflax/vae)9__doc__
__future__r   collections.abcr   r   dataclassesrF   typingr   rD   numpyrU   r   )jax.experimental.jax2tf.tests.flax_modelsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r.   r   
tensorflowr&   	dataclassr   r<   r9   rM   r\   rn   rr   r   r   r   r   r   r   r   r   r   r   r   rW   rJ   rK   rl   r   rI   r;   r#   r!   <module>r      s   !     " " " " " " . . . . . . . .               				      B B B B B B G G G G G G 9 9 9 9 9 9 9 9 9 9 9 9 < < < < < < B B B B B B N N N N N N T T T T T T L L L L L L 9 9 9 9 9 9 



           7 7 7 7 7 7 7 78 ;= < < < <# # # #.C C CF F F&C C C  &     $H H H = = =< < <# # #1 1 1= = == = =@ @ @@ @ @ \&
345 /<=>" ! !K -&	! ! ! ! ! 9bh/$1ABC628,w.ABC" ! !K - 	! ! ! ! ! \&
345 +RZ89:" ! !K -	! ! ! ! ! J 7 7 7 7 * A A A A \&
345 /<=>" ! !K -"	! ! ! ! !  
[1

	#lBJ%?@ 
[1

	#i%<= 
k2
RZ	 |RZ&@A" ! !K$ -&	! ! ! ! ! Z9bj)*+" # #K -.34 # #dJ M!	# # # # #	#  Z!^y"*-.23Z!^y"*-.23" ! !K -)	! ! ! ! ! \_bj123 +RZ89:" ! !K -	! ! ! ! !! !r#   