Я новичок в deeplearning4j и пытаюсь реализовать факторизацию 2-го порядка в deeplearning4j. Я использую граф вычислений для реализации следующей функции keras от python до scala. cat_2d - список выходных тензоров формы (Нет, k), где k - размерность вектора вложения. Я объединяю их как embed_2d и реализую факторизацию 2-го порядка. Тем не менее, я не уверен, как повторить то же самое в deeplearning4j в Scala. Пожалуйста, помогите.
Прикрепление эквивалентного кода 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