KERAS - Точечное произведение 3 векторов - PullRequest
0 голосов
/ 14 июля 2020

Мне нужно получить скалярное произведение из 3 элементов при построении модели keras. Функция точечного произведения принимает два входа, и мне интересно, что может быть обходным путем для получения точечного произведения трех векторов. В настоящее время мой код выглядит так:

from keras.layers import Input, Embedding, Flatten, Dot, Dense, Dropout
from keras.models import Model

vendor_input = Input(shape=[1], name="VENDOR-Input")
vendor_embedding = Embedding(n_vendors+1, 50, name="VENDOR-Embedding")(vendor_input)
vendor_vec = Flatten(name="Flatten-Vendors")(vendor_embedding)

loc_input = Input(shape=[1], name="LOC-Input")
loc_embedding = Embedding(n_loc_num+1, 50, name="LOC-Embedding")(loc_input)
loc_vec = Flatten(name="Flatten-LOC")(loc_embedding)

user_input = Input(shape=[1], name="User-Input")
user_embedding = Embedding(n_customers+1, 50, name="User-Embedding")(user_input)
user_vec = Flatten(name="Flatten-Users")(user_embedding)


prod = Dot(name="Dot-Product1", axes=1)([vendor_vec, loc_vec])

Я пробовал это сделать:

prod = Dot(name="Dot-Product1", axes=1)([vendor_vec, loc_vec])
prod = Dot(name="Dot-Product2", axes=1)([prod, user_vec])

, но это не сработало.

Я изучил функцию keras.multiply но он поэлементно умножает элементы, а это не то, что мне нужно. Как я могу взять точечное произведение трех элементов?

...