U C^>@sNddlmZddlmZmZmZmZmZddlm Z ddZ ed ddZ d S) )unicode_literals)layerizewrapnoopchain concatenate)ModelcsZ|sttS|dd|djdd|D}t|d fdd }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?rcSsg|]}t|tqS)rflatten).0Zlayerr r 1/tmp/pip-install-6_kvzl1k/spacy/spacy/ml/_wire.py sz%concatenate_lists..cs^|dk r|9}jdd|Ddd}j||d\}||}dfdd }||fS) NcSsg|] }t|qSr len)r Xr r r rszDconcatenate_lists..concatenate_lists_fwd..iZdtype)dropcs||dS)N)sgd)r )Zd_ysr) bp_flat_yopsr r concatenate_lists_bwdszOconcatenate_lists..concatenate_lists_fwd..concatenate_lists_bwd)N)asarrayZ begin_update unflatten)ZXsrlengthsZflat_yZysrconcatr r)rr concatenate_lists_fwds z0concatenate_lists..concatenate_lists_fwd)r)rrgetrrr)Zlayerskwargsrmodelr rr concatenate_listss    r#rcsDtjjdd|Dddd fdd }j|dd}||fS) NcSsg|] }t|qSr r)r seqr r r r$szflatten..rrcsj|ddS)Nrpad)r)Zd_Xrrrr r finish_update&szflatten..finish_updaterr%)N)rrrr )Zseqsrr(rr r'r r !s r N)r) __future__rZ thinc.apirrrrrZ thinc.v2vrr#r r r r r s