Мне нужно получить скалярное произведение из 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 но он поэлементно умножает элементы, а это не то, что мне нужно. Как я могу взять точечное произведение трех элементов?