如何在deeplearning4j中实现二阶分解层?

2024-09-29 00:21:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我是deeplearning4j的新手,我正在尝试在deeplearning4j中实现二阶因式分解。我使用计算图从python到scala实现以下keras函数。 cat_2d是形状的输出张量列表(无,k) 其中k是嵌入向量维数。我将它们连接为embed_2d并实现二阶因式分解。但是,我不知道如何在scala的deeplearning4j中复制相同的功能。请帮忙

附加等效的python代码

def fm:

    embed_2d = Concatenate(axis=1, name = 'concat_embed_2d')(cat_2d)
    tensor_sum = Lambda(lambda x: K.sum(x, axis = 1), name = 'sum_of_tensors')
    tensor_square = Lambda(lambda x: multiply([x,x]), name = 'square_of_tensors')

    sum_of_embed = tensor_sum(embed_2d)
    square_of_embed = tensor_square(embed_2d)

    square_of_sum = Multiply()([sum_of_embed, sum_of_embed])
    sum_of_square = tensor_sum(square_of_embed)

    sub = Subtract()([square_of_sum, sum_of_square])
    sub = Lambda(lambda x: x*0.5)(sub)

    fm_2d = Reshape((1,), name = 'fm_2d_output')(tensor_sum(sub))

    return fm_2d, embed_2d

Tags: oflambdanameembedcatsumtensorscala