3
EgG0 @ sn d dl mZ G dd dZdd Zdd Zdd d
Zdd Zd
d ZdddZdddZ dddZ
dd ZdS ) )brewc @ s e Zd Zeed\ZZZZdS )
AttentionType N) __name__
__module____qualname__tuplerangeZRegularZ RecurrentZDotZSoftCoverage r
r
C/usr/local/lib64/python3.6/site-packages/caffe2/python/attention.pyr s r c C s dj t| t|S )Nz{}/{})formatstr)scopenamer
r
r s s r c C sB t j| ||gt|d}| jj||t|dgdd|gd\}}|S )N"attention_weighted_encoder_contextZ,attention_weighted_encoder_context_old_shape )shape)r Z
batch_mat_mulr netZReshape)modelencoder_outputs_transposedencoder_output_dimattention_weights_3dr r _r
r
r _calc_weighted_context s
r Nc C s> |d k r | j j||gdgdd}tj| |t|dddd}|S )NZmasked_attention_logitssequence)moder ZCUDNNr )Zengineaxis)r ZSequenceMaskr Zsoftmaxr )r attention_logits_transposedr encoder_lengthsr r
r
r _calc_attention_weights0 s r! c C sN | j j||}tj| |t|d|dddd}tj| |t|ddddgd}|S ) Nattention_logitsr T)dim_indim_outr Zfreeze_biasr r )Zaxes)r ZTanhr fcr transpose)r "decoder_hidden_encoder_outputs_sumr r r" r r
r
r %_calc_attention_logits_from_sum_matchI s" r) c C s4 t j| |t||||dd}| jj||dgd}|S )Nr# )r$ r% r r )dims)r r&