
    fTh                         S SK Jr  S SKJrJrJr  S SKrS SKrSSKJ	r	  SSK
Jr  SSKJr  SSKJrJr  S	S
KJr  SSKJr  \R*                  " \5      r\ " S S\5      5       r\ " S S\5      5       rS/rg)    )	dataclass)ListOptionalUnionN   )Cache)$ImageClassifierOutputWithNoAttention)PreTrainedModel)auto_docstringlogging   )AutoModelForImageTextToText   )ShieldGemma2Configc                   B    \ rS rSr% SrSr\\R                     \	S'   Sr
g)0ShieldGemma2ImageClassifierOutputWithNoAttention$   zVShieldGemma2 classifies imags as violative or not relative to a specific policy
Args:
Nprobabilities )__name__
__module____qualname____firstlineno____doc__r   r   torchTensor__annotations____static_attributes__r       n/var/www/auris/envauris/lib/python3.13/site-packages/transformers/models/shieldgemma2/modeling_shieldgemma2.pyr   r   $   s     -1M8ELL)0r   r   c                      ^  \ rS rSr\rS\4U 4S jjrS rS rS r	S r
S rS	 rS
 r\              SS\\R"                     S\\R$                     S\\R&                     S\\R"                     S\\\\R$                     \4      S\\R"                     S\\R"                     S\\R$                     S\\R"                     S\\   S\\   S\\   S\\   S\\\R&                  4   S\4S jj5       rSrU =r$ )"ShieldGemma2ForImageClassification-   configc                    > [         TU ]  US9  [        USS5      U l        [        USS5      U l        [
        R                  " US9U l        g )N)r$   yes_token_indexi *  no_token_indexi  )super__init__getattrr&   r'   r   from_configmodel)selfr$   	__class__s     r    r)   +ShieldGemma2ForImageClassification.__init__1   sI    '&v/@&I%f.>E0<<FK
r   c                 J    U R                   R                  R                  5       $ N)r,   language_modelget_input_embeddingsr-   s    r    r3   7ShieldGemma2ForImageClassification.get_input_embeddings7   s    zz((==??r   c                 N    U R                   R                  R                  U5        g r1   )r,   r2   set_input_embeddings)r-   values     r    r7   7ShieldGemma2ForImageClassification.set_input_embeddings:   s    

!!66u=r   c                 J    U R                   R                  R                  5       $ r1   )r,   r2   get_output_embeddingsr4   s    r    r;   8ShieldGemma2ForImageClassification.get_output_embeddings=   s    zz((>>@@r   c                 N    U R                   R                  R                  U5        g r1   )r,   r2   set_output_embeddings)r-   new_embeddingss     r    r>   8ShieldGemma2ForImageClassification.set_output_embeddings@   s    

!!77Gr   c                 N    U R                   R                  R                  U5        g r1   )r,   r2   set_decoder)r-   decoders     r    rB   .ShieldGemma2ForImageClassification.set_decoderC   s    

!!--g6r   c                 J    U R                   R                  R                  5       $ r1   )r,   r2   get_decoderr4   s    r    rF   .ShieldGemma2ForImageClassification.get_decoderF       zz((4466r   c                 J    U R                   R                  R                  5       $ r1   )r,   r2   tie_weightsr4   s    r    rJ   .ShieldGemma2ForImageClassification.tie_weightsI   rH   r   	input_idspixel_valuesattention_maskposition_idspast_key_valuestoken_type_idscache_positioninputs_embedslabels	use_cacheoutput_attentionsoutput_hidden_statesreturn_dictlogits_to_keepreturnc                     U R                   " SUUUUUUUUU	U
UUUUS.UD6nUR                  nUSS2SU R                  U R                  /4   n[        R
                  " USS9n[        UUS9$ )a  
Returns:
    A `ShieldGemma2ImageClassifierOutputWithNoAttention` instance containing the logits and probabilities
    associated with the model predicting the `Yes` or `No` token as the response to that prompt, captured in the
    following properties.

        *   `logits` (`torch.Tensor` of shape `(batch_size, 2)`):
            The first position along dim=1 is the logits for the `Yes` token and the second position along dim=1 is
            the logits for the `No` token.
        *   `probabilities` (`torch.Tensor` of shape `(batch_size, 2)`):
            The first position along dim=1 is the probability of predicting the `Yes` token and the second position
            along dim=1 is the probability of predicting the `No` token.

    ShieldGemma prompts are constructed such that predicting the `Yes` token means the content *does violate* the
    policy as described. If you are only interested in the violative condition, use
    `violated = outputs.probabilities[:, 1]` to extract that slice from the output tensors.

    When used with the `ShieldGemma2Processor`, the `batch_size` will be equal to `len(images) * len(policies)`,
    and the order within the batch will be img1_policy1, ... img1_policyN, ... imgM_policyN.
)rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   N)dim)logitsr   r   )r,   r^   r&   r'   r   softmaxr   )r-   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   	lm_kwargsoutputsr^   selected_logitsr   s                       r    forward*ShieldGemma2ForImageClassification.forwardL   s    N ** 
%)%+))'/!5#)
 
"  B)=)=t?R?R(S!STo2>?"'
 	
r   )r,   r'   r&   )NNNNNNNNNNNNNr   )r   r   r   r   r   config_classr)   r3   r7   r;   r>   rB   rF   rJ   r   r   r   
LongTensorFloatTensorr   r   r   r   boolintr   rc   r   __classcell__)r.   s   @r    r"   r"   -   s   %LL1 L@>AH777  15481537KO595959-1$(,0/3&*34=
E,,-=
 u001=
 !.	=

 u//0=
 "%U->->(?(F"GH=
 !!1!12=
 !!1!12=
   1 12=
 ))*=
 D>=
 $D>=
 'tn=
 d^=
 c5<</0=
" 
:#=
 =
r   r"   )dataclassesr   typingr   r   r   r   torch.utils.checkpointcache_utilsr   modeling_outputsr	   modeling_utilsr
   utilsr   r   autor   configuration_shieldgemma2r   
get_loggerr   loggerr   r"   __all__r   r   r    <module>rw      s     " ( (     D - / : 
		H	% 17[ 1 1 \
 \
 \
@ )r   