https://github.com/taoshen58/BiBloSA/blob/ec67cbdc411278dd29e8888e9fd6451695efc26c/context_fusion/self_attn.py#L29
Мне нужно использовать mulit_dimensional_attention по приведенной выше ссылке, которая реализована в TensorFlow, но я использую PyTorch, поэтому я могу преобразовать Tensor Pytorch в TensorFlow Tensor, или мне нужно реализовать его в коде PyTorch.
, который я пытаюсь использовать здесь, я должен передать 'rep_tensor' как тип тензора TensorFlow, но у меня есть тензор PyTorch
def multi_dimensional_attention(rep_tensor, rep_mask=None, scope=None,
keep_prob=1., is_train=None, wd=0., activation='elu',
tensor_dict=None, name=None):
# bs, sl, vec = tf.shape(rep_tensor)[0], tf.shape(rep_tensor)[1], tf.shape(rep_tensor)[2]
ivec = rep_tensor.shape[2]
with tf.variable_scope(scope or 'multi_dimensional_attention'):
map1 = bn_dense_layer(rep_tensor, ivec, True, 0., 'bn_dense_map1', activation,
False, wd, keep_prob, is_train)
map2 = bn_dense_layer(map1, ivec, True, 0., 'bn_dense_map2', 'linear',
False, wd, keep_prob, is_train)
# map2_masked = exp_mask_for_high_rank(map2, rep_mask)
soft = tf.nn.softmax(map2, 1) # bs,sl,vec
attn_output = tf.reduce_sum(soft * rep_tensor, 1) # bs, vec
# save attn
if tensor_dict is not None and name is not None:
tensor_dict[name] = soft
return attn_output