我试图将此模型移植到Keras
v2 中,但以下功能存在问题:
def __call__(self, sent1, sent2):
def _outer(AB):
att_ji = K.batch_dot(AB[1], K.permute_dimensions(AB[0], (0, 2, 1)))
return K.permute_dimensions(att_ji, (0, 2, 1))
return merge([self.model(sent1), self.model(sent2)], mode=_outer,
output_shape=(self.max_length, self.max_length))
根据文档,mode
是:
字符串或 lambda/函数。如果是字符串,则必须是以下之一:'sum'、'mul'、'concat'、'ave'、'cos'、'dot'、'max'。如果是 lambda/function,它应该将张量列表作为输入并返回单个张量。
什么是新Keras
版本中的等效函数(当模式为函数/lambda时)以避免以下警告:
UserWarning: The `merge` function is deprecated and will be removed after 08/2017. Use instead layers from `keras.layers.merge`, e.g. `add`, `concatenate`, etc.
return merge([attention, sentence], mode=_normalize_attention, output_shape=(self.max_length, self.nr_hidden))