def AttentiveCNN_match(context, query, context_mask, query_mask, causality=False, scope='AttentiveCNN_Block', reuse=None, **kwargs): with tf.variable_scope(scope, reuse=reuse): direction = 'forward' if causality else 'none' cnn_wo_att = CNN_encode(context, filter_size=3, direction=direction, act_fn=None) att_context, _ = Attentive_match(context, query, context_mask, query_mask, causality=causality) cnn_att = CNN_encode(att_context, filter_size=1, direction=direction, act_fn=None) output = tf.nn.tanh(cnn_wo_att + cnn_att) return dropout_res_layernorm(context, output, **kwargs)
def Res_DualCNN_encode(seqs, use_spatial_dropout=True, scope='res_biconv_block', reuse=None, **kwargs): with tf.variable_scope(scope, reuse=reuse): out1 = CNN_encode(seqs, scope='first_conv1d', **kwargs) if use_spatial_dropout: out1 = spatial_dropout(out1) out2 = CNN_encode(out1, scope='second_conv1d', **kwargs) if use_spatial_dropout: out2 = CNN_encode(out2) return dropout_res_layernorm(seqs, out2, **kwargs)