
    Ng                    x    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
mZ  G d dej                  ZdS )    )annotationsN)
load_model)
save_model)Tensornnc                  N     e Zd Zd fdZddZd ZdddZed             Z xZ	S )	LayerNorm	dimensionintc                    t                                                       || _        t          j        |          | _        d S N)super__init__r
   r   r	   norm)selfr
   	__class__s     b/var/www/html/ai-engine/env/lib/python3.11/site-packages/sentence_transformers/models/LayerNorm.pyr   zLayerNorm.__init__   s5    "L++			    featuresdict[str, Tensor]c                B    |                      |d                   |d<   |S )Nsentence_embedding)r   )r   r   s     r   forwardzLayerNorm.forward   s$    )-8<P3Q)R)R%&r   c                    | j         S r   )r
   )r   s    r    get_sentence_embedding_dimensionz*LayerNorm.get_sentence_embedding_dimension   s
    ~r   Tsafe_serializationboolreturnNonec                   t          t          j                            |d          d          5 }t	          j        d| j        i|d           d d d            n# 1 swxY w Y   |r0t          | t          j                            |d                     d S t          j	        | 
                                t          j                            |d                     d S )Nconfig.jsonwr
      )indentmodel.safetensorspytorch_model.bin)openospathjoinjsondumpr
   save_safetensors_modeltorchsave
state_dict)r   output_pathr   fOuts       r   r/   zLayerNorm.save   s   "',,{M::C@@ 	EDI{DN3T!DDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E  	Z"4kCV)W)WXXXXXJt(("',,{DW*X*XYYYYYs   AA!Ac                \   t          t          j                            | d                    5 }t	          j        |          }d d d            n# 1 swxY w Y   t          di |}t          j                            t          j                            | d                    r/t          |t          j                            | d                     nZ|	                    t          j        t          j                            | d          t          j        d          d                     |S )Nr!   r%   r&   cpuT)map_locationweights_only )r'   r(   r)   r*   r+   loadr	   existsload_safetensors_modelload_state_dictr.   device)
input_pathfInconfigmodels       r   r8   zLayerNorm.load"   s8   "',,z=99:: 	$cYs^^F	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ ##F##7>>"',,z3FGGHH 	"5"',,zCV*W*WXXXX!!
GLL-@AAPUP\]bPcPcrv    
 s   AAA)r
   r   )r   r   )T)r   r   r   r   )
__name__
__module____qualname__r   r   r   r/   staticmethodr8   __classcell__)r   s   @r   r	   r	      s        , , , , , ,
     Z Z Z Z Z   \    r   r	   )
__future__r   r+   r(   r.   safetensors.torchr   r:   r   r-   r   r   Moduler	   r7   r   r   <module>rI      s    " " " " " "  				  B B B B B B B B B B B B        $ $ $ $ $	 $ $ $ $ $r   