o
    i                     @   s  d dl mZmZmZmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZmZ ddlmZmZ eZeZed				dd	d	d
dee dee dee dee de
eef f
ddZde
eef dededeeef fddZ				ddedede
eef dee dee dd	fddZd	S )    )CallableOptionalTuplecast   )registry)	zero_init)Model)Floats1dFloats2d)	get_widthpartialz
Sigmoid.v1N)init_Winit_bnOnIr   r   returnc                C   s>   |du rt }|du rt }tdttt||| |dddddS )zA dense layer, followed by a sigmoid (logistic) activation function. This
    is usually used instead of the Softmax layer as an output for multi-label
    classification.
    Nsigmoid)r   r   )Wb)initdimsparams)r   r	   forwardr   r   )r   r   r   r    r   H/home/ubuntu/.local/lib/python3.10/site-packages/thinc/layers/sigmoid.pySigmoid   s   
r   modelXis_trainc                    s`   t td t td}j |jdtdtf fdd}|fS )Nr   r   dYr   c                    sN   j j| dd} d| jdd dj j| dd j |  S )	NF)inplacer   r   )axisr   T)trans1)opsbackprop_sigmoidinc_gradsumgemm)r    r   r   Yr   r   r   backprop,   s   zforward.<locals>.backprop)	r   r   	get_paramr
   r$   affiner   InTOutT)r   r   r   r   r+   r   r)   r   r   &   s   r   r*   c              	   C   s   |d ur| dd u r|dt| |d ur&| dd u r&|dt| |d| |j|d|df |d||j|df d S )Nr   r   r   r   )has_dimset_dimr   	set_paramr$   get_dim)r   r   r   r   r*   r   r   r   r   5   s   $ r   )NN)typingr   r   r   r   configr   initializersr   r   r	   typesr
   r   utilr   r   r.   r/   layersintr   boolr   r   r   r   r   r   <module>   sR    
*
