B
    -(b>                 @   sN   d dl mZ d dlmZmZmZmZmZ d dlm	Z	 dd Z
ed
ddZd	S )    )unicode_literals)layerizewrapnoopchainconcatenate)Modelc                 sZ   | st t S |dd| d jdd | D } t|   d	 fdd	}t| }|S )
zCompose two or more models `f`, `g`, etc, such that their outputs are
    concatenated, i.e. `concatenate(f, g)(x)` computes `hstack(f(x), g(x))`
    drop_factorg      ?r   c             S   s   g | ]}t |tqS  )r   flatten).0Zlayerr
   r
   =/home/dcms/DCMS/lib/python3.7/site-packages/spacy/ml/_wire.py
<listcomp>   s    z%concatenate_lists.<locals>.<listcomp>        c                s^   |d k	r|9 }j dd | D dd}j| |d\} ||}d fdd	}||fS )	Nc             S   s   g | ]}t |qS r
   )len)r   Xr
   r
   r   r      s    zDconcatenate_lists.<locals>.concatenate_lists_fwd.<locals>.<listcomp>i)dtype)dropc                s     | |dS )N)sgd)r   )Zd_ysr   )	bp_flat_yopsr
   r   concatenate_lists_bwd   s    zOconcatenate_lists.<locals>.concatenate_lists_fwd.<locals>.concatenate_lists_bwd)N)asarrayZbegin_update	unflatten)ZXsr   lengthsZflat_yZysr   )concatr	   r   )r   r   concatenate_lists_fwd   s    z0concatenate_lists.<locals>.concatenate_lists_fwd)r   )r   r   getr   r   r   )Zlayerskwargsr   modelr
   )r   r	   r   r   concatenate_lists   s    


r!           c                sD   t jjdd | D dd d	 fdd	}j| dd}||fS )
Nc             S   s   g | ]}t |qS r
   )r   )r   seqr
   r
   r   r   $   s    zflatten.<locals>.<listcomp>r   )r   c                s   j |  ddS )Nr   )pad)r   )Zd_Xr   )r   r   r
   r   finish_update&   s    zflatten.<locals>.finish_updater   )r$   )N)r   r   r   r   )Zseqsr   r%   r   r
   )r   r   r   r   !   s
    r   N)r"   )
__future__r   Z	thinc.apir   r   r   r   r   Z	thinc.v2vr   r!   r   r
   r
   r
   r   <module>   s
   