
     `igo                     P   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mZmZmZ d dlmZmZ d dlmZ d dlmZmZmZmZ d dlmZmZmZmZ d d	lmZm Z  d
Z!dZ" G d dej#                  Z$ G d dej#                  Z% G d dej#                  Z& G d dej#                  Z' G d dej#                  Z( G d dej#                  Z) G d dej#                  Z* G d dej#                  Z+ G d dej#                  Z, G d dej#                  Z- G d  d!ej#                  Z. G d" d#ej#                  Z/ G d$ d%ej#                  Z0 G d& d'ej#                  Z1 G d( d)e          Z2 G d* d+ej#                  Z3 ed,e!           G d- d.e2                      Z4d/Z5 ee4e5            ee4ee0            G d1 d2ej#                  Z6 G d3 d4ej#                  Z7 ed5e!           G d6 d7e2                      Z8d8Z9 ee8e9            ee8ee0           g d9Z:dS ):    )partial)OptionalN)
FrozenDictfreezeunfreeze)flatten_dictunflatten_dict)RegNetConfig)"FlaxBaseModelOutputWithNoAttentionFlaxBaseModelOutputWithPooling,FlaxBaseModelOutputWithPoolingAndNoAttention(FlaxImageClassifierOutputWithNoAttention)ACT2FNFlaxPreTrainedModel append_replace_return_docstringsoverwrite_call_docstring)add_start_docstrings%add_start_docstrings_to_model_forwarda  

    This model inherits from [`FlaxPreTrainedModel`]. Check the superclass documentation for the generic methods the
    library implements for all its model (such as downloading, saving and converting weights from PyTorch models)

    This model is also a
    [flax.linen.Module](https://flax.readthedocs.io/en/latest/api_reference/flax.linen/module.html) subclass. Use it as
    a regular Flax linen Module and refer to the Flax documentation for all matter related to general usage and
    behavior.

    Finally, this model supports inherent JAX features such as:

    - [Just-In-Time (JIT) compilation](https://jax.readthedocs.io/en/latest/jax.html#just-in-time-compilation-jit)
    - [Automatic Differentiation](https://jax.readthedocs.io/en/latest/jax.html#automatic-differentiation)
    - [Vectorization](https://jax.readthedocs.io/en/latest/jax.html#vectorization-vmap)
    - [Parallelization](https://jax.readthedocs.io/en/latest/jax.html#parallelization-pmap)

    Parameters:
        config ([`RegNetConfig`]): Model configuration class with all the parameters of the model.
            Initializing with a config file does not load the weights associated with the model, only the
            configuration. Check out the [`~FlaxPreTrainedModel.from_pretrained`] method to load the model weights.
        dtype (`jax.numpy.dtype`, *optional*, defaults to `jax.numpy.float32`):
            The data type of the computation. Can be one of `jax.numpy.float32`, `jax.numpy.float16` (on GPUs) and
            `jax.numpy.bfloat16` (on TPUs).

            This can be used to enable mixed-precision training or half-precision inference on GPUs or TPUs. If
            specified all the computation will be performed with the given `dtype`.

            **Note that this only specifies the dtype of the computation and does not influence the dtype of model
            parameters.**

            If you wish to change the dtype of the model parameters, see [`~FlaxPreTrainedModel.to_fp16`] and
            [`~FlaxPreTrainedModel.to_bf16`].
a@  
    Args:
        pixel_values (`numpy.ndarray` of shape `(batch_size, num_channels, height, width)`):
            Pixel values. Pixel values can be obtained using [`AutoImageProcessor`]. See
            [`RegNetImageProcessor.__call__`] for details.

        output_hidden_states (`bool`, *optional*):
            Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors for
            more detail.
        return_dict (`bool`, *optional*):
            Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple.
c                   2    e Zd ZdZej        d             ZdS )IdentityzIdentity function.c                     |S N )selfxkwargss      /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/transformers/models/regnet/modeling_flax_regnet.py__call__zIdentity.__call__b   s        N)__name__
__module____qualname____doc__nncompactr   r   r   r   r   r   _   s5        Z  Z  r   r   c                       e Zd ZU eed<   dZeed<   dZeed<   dZeed<   dZe	e
         ed<   ej        Zej        ed	<   d
 Zddej        dedej        fdZdS )FlaxRegNetConvLayerout_channels   kernel_size   stridegroupsrelu
activationdtypec                 r   t          j        | j        | j        | j        f| j        | j        dz  | j        dt           j                            ddd          | j                  | _	        t          j
        dd	| j        
          | _        | j        t          | j                 nt                      | _        d S )N   F       @fan_outtruncated_normalmodedistribution)r*   stridespaddingfeature_group_countuse_biaskernel_initr0   ?h㈵>momentumepsilonr0   )r$   Convr(   r*   r,   r-   initializersvariance_scalingr0   convolution	BatchNormnormalizationr/   r   r   activation_funcr   s    r   setupzFlaxRegNetConvLayer.setupo   s    7)4+;<K$) $889[m8nn*	
 	
 	
  \3TZXXX:>/:Uvdo66[c[e[er   Thidden_statedeterministicreturnc                     |                      |          }|                     ||          }|                     |          }|S N)use_running_average)rF   rH   rI   )r   rL   rM   s      r   r   zFlaxRegNetConvLayer.__call__}   sF    ''55)),M)ZZ++L99r   NT)r    r!   r"   int__annotations__r*   r,   r-   r/   r   strjnpfloat32r0   rK   ndarrayboolr   r   r   r   r'   r'   g   s         KFCOOOFCOOO &J&&&{E39"""f f f S[  QTQ\      r   r'   c                   l    e Zd ZU eed<   ej        Zej        ed<   d Zd
dej	        de
dej	        fdZd	S )FlaxRegNetEmbeddingsconfigr0   c                 j    t          | j        j        dd| j        j        | j                  | _        d S )Nr)   r2   )r*   r,   r/   r0   )r'   r\   embedding_size
hidden_actr0   embedderrJ   s    r   rK   zFlaxRegNetEmbeddings.setup   s7    +K&{-*
 
 
r   Tpixel_valuesrM   rN   c                     |j         d         }|| j        j        k    rt          d          |                     ||          }|S )NzeMake sure that the channel dimension of the pixel values match with the one set in the configuration.rM   )shaper\   num_channels
ValueErrorr`   )r   ra   rM   rf   rL   s        r   r   zFlaxRegNetEmbeddings.__call__   sQ    #)"-4;333w   }}\}OOr   NrR   )r    r!   r"   r
   rT   rV   rW   r0   rK   rX   rY   r   r   r   r   r[   r[      sy         {E39"""
 
 
 S[  QTQ\      r   r[   c                   ~    e Zd ZU dZeed<   dZeed<   ej        Z	ej	        ed<   d Z
ddej        d	ed
ej        fdZdS )FlaxRegNetShortCutz
    RegNet shortcut, used to project the residual features to the correct size. If needed, it is also used to
    downsample the input using `stride=2`.
    r(   r2   r,   r0   c                     t          j        | j        d| j        dt           j                            ddd          | j                  | _        t          j        dd	| j        
          | _	        d S )Nr+   r+   Fr3   r4   r5   r6   )r*   r9   r<   r=   r0   r>   r?   r@   )
r$   rC   r(   r,   rD   rE   r0   rF   rG   rH   rJ   s    r   rK   zFlaxRegNetShortCut.setup   so    7K889[m8nn*
 
 
  \3TZXXXr   Tr   rM   rN   c                 ^    |                      |          }|                     ||          }|S rP   )rF   rH   )r   r   rM   rL   s       r   r   zFlaxRegNetShortCut.__call__   s3    ''**)),M)ZZr   NrR   )r    r!   r"   r#   rS   rT   r,   rV   rW   r0   rK   rX   rY   r   r   r   r   ri   ri      s          
 FCOOO{E39"""	Y 	Y 	Y #+ d ck      r   ri   c                   p    e Zd ZU eed<   eed<   ej        Zej        ed<   d Zdej	        dej	        fdZ
dS )	FlaxRegNetSELayerCollectionin_channelsreduced_channelsr0   c           	      &   t          j        | j        dt           j                            ddd          | j        d          | _        t          j        | j        dt           j                            ddd          | j        d          | _        d S )	Nrk   r3   r4   r5   r6   0)r*   r=   r0   name2)	r$   rC   rp   rD   rE   r0   conv_1ro   conv_2rJ   s    r   rK   z!FlaxRegNetSELayerCollection.setup   s    g!889[m8nn*
 
 
 g889[m8nn*
 
 
r   rL   rN   c                     |                      |          }t          j        |          }|                     |          }t          j        |          }|S r   )ru   r$   r.   rv   sigmoid)r   rL   	attentions      r   r   z$FlaxRegNetSELayerCollection.__call__   sH    {{<00w|,,{{<00J|,,	r   N)r    r!   r"   rS   rT   rV   rW   r0   rK   rX   r   r   r   r   rn   rn      sw         {E39"""
 
 
 S[ S[      r   rn   c                   t    e Zd ZU dZeed<   eed<   ej        Zej        ed<   d Z	dej
        dej
        fdZd	S )
FlaxRegNetSELayerz
    Squeeze and Excitation layer (SE) proposed in [Squeeze-and-Excitation Networks](https://huggingface.co/papers/1709.01507).
    ro   rp   r0   c                     t          t          j        d          | _        t	          | j        | j        | j                  | _        d S )Nr   r   r~   r:   r0   )	r   r$   avg_poolpoolerrn   ro   rp   r0   ry   rJ   s    r   rK   zFlaxRegNetSELayer.setup   s=    bk3CDDD4T5EtG\dhdnooor   rL   rN   c                     |                      ||j        d         |j        d         f|j        d         |j        d         f          }|                     |          }||z  }|S )Nr+   r2   window_shaper9   )r   re   ry   )r   rL   pooledry   s       r   r   zFlaxRegNetSELayer.__call__   sp    &,Q/1CA1FG!'*L,>q,AB  
 

 NN6**	#i/r   N)r    r!   r"   r#   rS   rT   rV   rW   r0   rK   rX   r   r   r   r   r{   r{      s           {E39"""p p pS[ S[      r   r{   c                       e Zd ZU eed<   eed<   dZeed<   ej        Z	ej	        ed<   d Z
ddej        d	ed
ej        fdZdS )FlaxRegNetXLayerCollectionr\   r(   r+   r,   r0   c           	      :   t          d| j        | j        j        z            }t	          | j        d| j        j        | j        d          t	          | j        | j        || j        j        | j        d          t	          | j        dd | j        d          g| _        d S )Nr+   rr   r*   r/   r0   rs   1r,   r-   r/   r0   rs   rt   )	maxr(   r\   groups_widthr'   r_   r0   r,   layerr   r-   s     r   rK   z FlaxRegNetXLayerCollection.setup   s    Q)T[-EEFF  !;1j    !{;1j    !j  !



r   TrL   rM   rN   c                 4    | j         D ]} |||          }|S Nrd   r   )r   rL   rM   r   s       r   r   z#FlaxRegNetXLayerCollection.__call__  s1    Z 	L 	LE 5]KKKLLr   NrR   )r    r!   r"   r
   rT   rS   r,   rV   rW   r0   rK   rX   rY   r   r   r   r   r   r      s         FCOOO{E39"""
 
 
8 S[  QTQ\      r   r   c                       e Zd ZU dZeed<   eed<   eed<   dZeed<   ej	        Z
ej
        ed<   d Zdd
ej        dedej        fdZdS )FlaxRegNetXLayerzt
    RegNet's layer composed by three `3x3` convolutions, same as a ResNet bottleneck layer with reduction = 1.
    r\   ro   r(   r+   r,   r0   c                 D   | j         | j        k    p
| j        dk    }|r!t          | j        | j        | j                  nt                      | _        t          | j        | j         | j        | j        | j                  | _	        t          | j        j                 | _        d S Nr+   )r,   r0   )ro   r(   r,   r0   )ro   r(   r,   ri   r0   r   shortcutr   r\   r   r   r_   rI   r   should_apply_shortcuts     r   rK   zFlaxRegNetXLayer.setup   s     $ 0D4E E YXYIY %!{j     	 0K(*;*
 
 

  &dk&<=r   TrL   rM   rN   c                     |}|                      |          }|                     ||          }||z  }|                     |          }|S r   r   r   rI   r   rL   rM   residuals       r   r   zFlaxRegNetXLayer.__call__4  P    zz,//===GG ++L99r   NrR   r    r!   r"   r#   r
   rT   rS   r,   rV   rW   r0   rK   rX   rY   r   r   r   r   r   r     s           FCOOO{E39"""> > >( S[  QTQ\      r   r   c                       e Zd ZU eed<   eed<   eed<   dZeed<   ej        Z	ej	        ed<   d Z
dej        d	ej        fd
ZdS )FlaxRegNetYLayerCollectionr\   ro   r(   r+   r,   r0   c                    t          d| j        | j        j        z            }t	          | j        d| j        j        | j        d          t	          | j        | j        || j        j        | j        d          t          | j        t          t          | j        dz                      | j        d          t	          | j        dd | j        d	          g| _        d S )
Nr+   rr   r   r   r      rt   )rp   r0   rs   3)r   r(   r\   r   r'   r_   r0   r,   r{   rS   roundro   r   r   s     r   rK   z FlaxRegNetYLayerCollection.setupD  s    Q)T[-EEFF  !;1j    !{;1j   !!$U4+;a+?%@%@!A!Aj	    !j  -



r   rL   rN   c                 0    | j         D ]} ||          }|S r   r   )r   rL   r   s      r   r   z#FlaxRegNetYLayerCollection.__call__f  s*    Z 	/ 	/E 5..LLr   N)r    r!   r"   r
   rT   rS   r,   rV   rW   r0   rK   rX   r   r   r   r   r   r   =  s         FCOOO{E39""" 
  
  
DS[ S[      r   r   c                       e Zd ZU dZeed<   eed<   eed<   dZeed<   ej	        Z
ej
        ed<   d Zdd
ej        dedej        fdZdS )FlaxRegNetYLayerzC
    RegNet's Y layer: an X layer with Squeeze and Excitation.
    r\   ro   r(   r+   r,   r0   c                 D   | j         | j        k    p
| j        dk    }|r!t          | j        | j        | j                  nt                      | _        t          | j        | j         | j        | j        | j                  | _	        t          | j        j                 | _        d S r   )ro   r(   r,   ri   r0   r   r   r   r\   r   r   r_   rI   r   s     r   rK   zFlaxRegNetYLayer.setupw  s     $ 0D4E E YXYIY %!{j     	 0K(*;*
 
 

  &dk&<=r   TrL   rM   rN   c                     |}|                      |          }|                     ||          }||z  }|                     |          }|S r   r   r   s       r   r   zFlaxRegNetYLayer.__call__  r   r   NrR   r   r   r   r   r   r   l  s           FCOOO{E39"""> > >* S[  QTQ\      r   r   c                       e Zd ZU dZeed<   eed<   eed<   dZeed<   dZeed<   e	j
        Ze	j        ed<   d	 Zdde	j        dede	j        fdZdS )FlaxRegNetStageLayersCollection4
    A RegNet stage composed by stacked layers.
    r\   ro   r(   r2   r,   depthr0   c                 h   | j         j        dk    rt          nt          } || j         | j        | j        | j        | j        d          g}t          | j	        dz
            D ]I}|
                     || j         | j        | j        | j        t          |dz                                  J|| _        d S )Nr   rr   )r,   r0   rs   r+   r0   rs   )r\   
layer_typer   r   ro   r(   r,   r0   ranger   appendrU   layers)r   r   r   is       r   rK   z%FlaxRegNetStageLayersCollection.setup  s    $(K$:c$A$A  GW E !{j  

 tzA~&& 		 		AMMK%%*QU      r   Tr   rM   rN   c                 8    |}| j         D ]} |||          }|S r   r   )r   r   rM   rL   r   s        r   r   z(FlaxRegNetStageLayersCollection.__call__  s6    [ 	L 	LE 5]KKKLLr   NrR   r    r!   r"   r#   r
   rT   rS   r,   r   rV   rW   r0   rK   rX   rY   r   r   r   r   r   r     s           FCOOOE3NNN{E39"""  8 #+ d ck      r   r   c                       e Zd ZU dZeed<   eed<   eed<   dZeed<   dZeed<   e	j
        Ze	j        ed<   d	 Zdde	j        dede	j        fdZdS )FlaxRegNetStager   r\   ro   r(   r2   r,   r   r0   c                 v    t          | j        | j        | j        | j        | j        | j                  | _        d S )N)ro   r(   r,   r   r0   )r   r\   ro   r(   r,   r   r0   r   rJ   s    r   rK   zFlaxRegNetStage.setup  s<    5K(*;**
 
 
r   Tr   rM   rN   c                 0    |                      ||          S r   r   )r   r   rM   s      r   r   zFlaxRegNetStage.__call__  s    {{1M{:::r   NrR   r   r   r   r   r   r     s           FCOOOE3NNN{E39"""
 
 
; ;#+ ;d ;ck ; ; ; ; ; ;r   r   c            	       j    e Zd ZU eed<   ej        Zej        ed<   d Z	 	 ddej	        de
de
d	efd
ZdS )FlaxRegNetStageCollectionr\   r0   c                    t          | j        j        | j        j        dd                    }t          | j        | j        j        | j        j        d         | j        j        rdnd| j        j        d         | j        d          g}t          t          || j        j        dd                              D ]M\  }\  \  }}}|	                    t          | j        |||| j        t          |dz                                  N|| _        d S )Nr+   r   r2   rr   )r,   r   r0   rs   )r   r0   rs   )zipr\   hidden_sizesr   r^   downsample_in_first_stagedepthsr0   	enumerater   rU   stages)r   in_out_channelsr   r   ro   r(   r   s          r   rK   zFlaxRegNetStageCollection.setup  s   dk68PQRQSQS8TUU*(+ KAHqqqk(+j  

 8A_VZVaVhijikikVlAmAm7n7n 	 	3A3+lUMM[,e[_[elopqtupulvlvwww    r   FTrL   output_hidden_statesrM   rN   c                     |rdnd }| j         D ]-}|r||                    dddd          fz   } |||          }.||fS )Nr   r   r)   r+   r2   rd   )r   	transpose)r   rL   r   rM   hidden_statesstage_modules         r   r   z"FlaxRegNetStageCollection.__call__  sq     3< K 	S 	SL# V -1G1G1aQR1S1S0U U'<MRRRLL]**r   N)FTr    r!   r"   r
   rT   rV   rW   r0   rK   rX   rY   r   r   r   r   r   r   r     s         {E39"""  0 &+"	+ +k+ #+ 	+
 
,+ + + + + +r   r   c                   p    e Zd ZU eed<   ej        Zej        ed<   d Z	 	 	 ddej	        de
de
d	e
d
ef
dZdS )FlaxRegNetEncoderr\   r0   c                 F    t          | j        | j                  | _        d S )Nr   )r   r\   r0   r   rJ   s    r   rK   zFlaxRegNetEncoder.setup  s    /4:NNNr   FTrL   r   return_dictrM   rN   c                     |                      |||          \  }}|r||                    dddd          fz   }|st          d ||fD                       S t          ||          S )N)r   rM   r   r)   r+   r2   c              3      K   | ]}||V  	d S r   r   ).0vs     r   	<genexpr>z-FlaxRegNetEncoder.__call__.<locals>.<genexpr>!  s"      SSqQ]]]]]SSr   )last_hidden_stater   )r   r   tupler   )r   rL   r   r   rM   r   s         r   r   zFlaxRegNetEncoder.__call__  s     '+kk/CS` '2 '
 '
#m   	R)\-C-CAq!Q-O-O,QQM 	TSS\=$ASSSSSS1*'
 
 
 	
r   N)FTTr   r   r   r   r   r     s         {E39"""O O O &+ "
 
k
 #
 	

 
 
,
 
 
 
 
 
r   r   c                       e Zd ZU dZeZdZdZdZe	j
        ed<   ddej        dfd	ed
edej        def fdZddej        j        dededefdZ ee          	 	 	 	 ddee         dedee         dee         fd            Z xZS )FlaxRegNetPreTrainedModelz
    An abstract class to handle weights initialization and a simple interface for downloading and loading pretrained
    models.
    regnetra   Nmodule_class)r+      r   r)   r   Tr\   seedr0   _do_initc                      | j         d||d|}|d|j        |j        |j        f}t                                          ||||||           d S )Nr\   r0   r+   )input_shaper   r0   r   r   )r   
image_sizerf   super__init__)	r   r\   r   r   r0   r   r   module	__class__s	           r   r   z"FlaxRegNetPreTrainedModel.__init__5  sn     #"H&HHHHf/1BFDWXK[tSXcklllllr   rngr   paramsrN   c                 z   t          j        || j                  }d|i}| j                            ||d          }||t          t          |                    }t          t          |                    }| j        D ]}||         ||<   t                      | _        t          t          |                    S |S )Nr   r   F)r   )rV   zerosr0   r   initr   r   _missing_keyssetr   r	   )r   r   r   r   ra   rngsrandom_paramsmissing_keys           r   init_weightsz&FlaxRegNetPreTrainedModel.init_weightsC  s    yDJ???#((|(OO(-)@)@AAM!(6"2"233F#1 A A&3K&@{##!$D.00111  r   Ftrainr   r   c           	      T   ||n| j         j        }||n| j         j        }t          j        |d          }i }| j                            ||d         n| j        d         ||d         n| j        d         dt          j        |t          j	                  | ||||rdgnd          S )N)r   r2   r)   r+   r   batch_stats)r   r   r   F)r   mutable)
r\   r   r   rV   r   r   applyr   arrayrW   )r   ra   r   r   r   r   r   s          r   r   z"FlaxRegNetPreTrainedModel.__call__U  s     %9$D  $+Jj 	 &1%<kk$+BY}\<@@ {  .4.@&**dkRZF[8>8Jvm44PTP[\iPj  Il#+666I ',7]OO% ! 
 
 	
r   r   )NFNN)r    r!   r"   r#   r
   config_classbase_model_prefixmain_input_namer   r$   ModulerT   rV   rW   rS   r0   rY   r   jaxrandomPRNGKeyr   r   r   r   REGNET_INPUTS_DOCSTRINGr   dictr   __classcell__)r   s   @r   r   r   *  sf         
  L $O"L")"""
 %;m mm 	m
 ym m m m m m m! !
 2 ! !PZ !fp ! ! ! !$ +*+BCC "&/3&*
 
 
 	

 'tn
 d^
 
 
 DC
 
 
 
 
r   r   c            	       b    e Zd ZU eed<   ej        Zej        ed<   d Z	 	 	 dde	de	de	d	e
fd
ZdS )FlaxRegNetModuler\   r0   c                     t          | j        | j                  | _        t	          | j        | j                  | _        t          t          j        d          | _	        d S )Nr   r}   r   )
r[   r\   r0   r`   r   encoderr   r$   r   r   rJ   s    r   rK   zFlaxRegNetModule.setup{  sV    ,T[
KKK(DJGGG K$
 
 
r   TFrM   r   r   rN   c                    ||n| j         j        }||n| j         j        }|                     ||          }|                     ||||          }|d         }|                     ||j        d         |j        d         f|j        d         |j        d         f                              dddd          }|                    dddd          }|s||f|dd          z   S t          |||j	                  S )	Nrd   )r   r   rM   r   r+   r2   r   r)   )r   pooler_outputr   )
r\   r   use_return_dictr`   r  r   re   r   r   r   )	r   ra   rM   r   r   embedding_outputencoder_outputsr   pooled_outputs	            r   r   zFlaxRegNetModule.__call__  s>    %9$D  $+Jj 	 &1%<kk$+B]==]=SS,,!5#'	 ' 
 
 ,A.+1!46G6Ma6PQ&,Q/1B1H1KL $ 
 
 )Aq!Q

	 	 .771aCC 	L%}58KKK;/')7
 
 
 	
r   N)TFT)r    r!   r"   r
   rT   rV   rW   r0   rK   rY   r   r   r   r   r   r  r  w  s         {E39"""
 
 
 #%* &
 &
 &
 #	&

 &
 
6&
 &
 &
 &
 &
 &
r   r  zOThe bare RegNet model outputting raw features without any specific head on top.c                       e Zd ZeZdS )FlaxRegNetModelN)r    r!   r"   r  r   r   r   r   r  r    s        
 $LLLr   r  at  
    Returns:

    Examples:

    ```python
    >>> from transformers import AutoImageProcessor, FlaxRegNetModel
    >>> from PIL import Image
    >>> import requests

    >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
    >>> image = Image.open(requests.get(url, stream=True).raw)

    >>> image_processor = AutoImageProcessor.from_pretrained("facebook/regnet-y-040")
    >>> model = FlaxRegNetModel.from_pretrained("facebook/regnet-y-040")

    >>> inputs = image_processor(images=image, return_tensors="np")
    >>> outputs = model(**inputs)
    >>> last_hidden_states = outputs.last_hidden_state
    ```
)output_typer   c                   f    e Zd ZU eed<   ej        Zej        ed<   d Zdej	        dej	        fdZ
dS )FlaxRegNetClassifierCollectionr\   r0   c                 \    t          j        | j        j        | j        d          | _        d S )Nr   r   )r$   Denser\   
num_labelsr0   
classifierrJ   s    r   rK   z$FlaxRegNetClassifierCollection.setup  s&    (4;#9RUVVVr   r   rN   c                 ,    |                      |          S r   )r  )r   r   s     r   r   z'FlaxRegNetClassifierCollection.__call__  s    q!!!r   N)r    r!   r"   r
   rT   rV   rW   r0   rK   rX   r   r   r   r   r  r    sn         {E39"""W W W"#+ "#+ " " " " " "r   r  c                   X    e Zd ZU eed<   ej        Zej        ed<   d Z	 	 	 	 dde	fdZ
dS )	&FlaxRegNetForImageClassificationModuler\   r0   c                     t          | j        | j                  | _        | j        j        dk    r"t          | j        | j                  | _        d S t                      | _        d S )Nr   r   r   )r  r\   r0   r   r  r  r  r   rJ   s    r   rK   z,FlaxRegNetForImageClassificationModule.setup  sW    &dkLLL;!A%%<T[PTPZ[[[DOOO&jjDOOOr   NTrM   c                    ||n| j         j        }|                     ||||          }|r|j        n|d         }|                     |d d d d ddf                   }|s|f|dd          z   }|S t          ||j                  S )N)rM   r   r   r+   r   r2   )logitsr   )r\   r	  r   r  r  r   r   )	r   ra   rM   r   r   outputsr  r  outputs	            r   r   z/FlaxRegNetForImageClassificationModule.__call__  s     &1%<kk$+B]++'!5#	  
 
 2=L--'!*qqq!!!Qz!:;; 	Y,FM7vU\Ujkkkkr   )NTNN)r    r!   r"   r
   rT   rV   rW   r0   rK   rY   r   r   r   r   r  r    s~         {E39""") ) ) "!l l l l l l l lr   r  z
    RegNet Model with an image classification head on top (a linear layer on top of the pooled features), e.g. for
    ImageNet.
    c                       e Zd ZeZdS ) FlaxRegNetForImageClassificationN)r    r!   r"   r  r   r   r   r   r  r    s         :LLLr   r  aa  
    Returns:

    Example:

    ```python
    >>> from transformers import AutoImageProcessor, FlaxRegNetForImageClassification
    >>> from PIL import Image
    >>> import jax
    >>> import requests

    >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
    >>> image = Image.open(requests.get(url, stream=True).raw)

    >>> image_processor = AutoImageProcessor.from_pretrained("facebook/regnet-y-040")
    >>> model = FlaxRegNetForImageClassification.from_pretrained("facebook/regnet-y-040")

    >>> inputs = image_processor(images=image, return_tensors="np")
    >>> outputs = model(**inputs)
    >>> logits = outputs.logits

    >>> # model predicts one of the 1000 ImageNet classes
    >>> predicted_class_idx = jax.numpy.argmax(logits, axis=-1)
    >>> print("Predicted class:", model.config.id2label[predicted_class_idx.item()])
    ```
)r  r  r   );	functoolsr   typingr   
flax.linenlinenr$   r   	jax.numpynumpyrV   flax.core.frozen_dictr   r   r   flax.traverse_utilr   r	   transformersr
   "transformers.modeling_flax_outputsr   r   r   r    transformers.modeling_flax_utilsr   r   r   r   transformers.utilsr   r   REGNET_START_DOCSTRINGr   r   r   r'   r[   ri   rn   r{   r   r   r   r   r   r   r   r   r   r  r  FLAX_VISION_MODEL_DOCSTRINGr  r  r  FLAX_VISION_CLASSIF_DOCSTRING__all__r   r   r   <module>r0     s  "                   



       > > > > > > > > > > ; ; ; ; ; ; ; ; % % % % % %                             ! F     ry       ")   :    29   0       6    ")   <    	   0% % % % % % % %P% % % % %ry % % %P, , , , , , , ,^& & & & &ry & & &R, , , , ,bi , , ,`; ; ; ; ;bi ; ; ;6'+ '+ '+ '+ '+	 '+ '+ '+V
 
 
 
 
	 
 
 
>I
 I
 I
 I
 I
 3 I
 I
 I
Z4
 4
 4
 4
 4
ry 4
 4
 4
n U $ $ $ $ $/ $ $	 $ ,  *E F F F    .   " " " " "RY " " "$l $l $l $l $lRY $l $l $lN   : : : : :'@ : : :! 6  9;X Y Y Y    $8    _
^
^r   