如何为keras层编写lambda函数,用于矢量矩阵乘法

问题描述 投票:0回答:1

对于dot(),它采用点积,数学上定义为:ab = sum(a_i * b_i),但是如何在keras中为a * b = product(a_i * b_i)编写lambda函数,并且将此输入转发到下一层

tensorflow machine-learning keras keras-layer
1个回答
0
投票

您可以执行以下操作。本质上,我们对(None, 10)大小的输入和(10,20)大小的输入乘以点积。这将产生(None, 20)大小的输出。

import numpy as np
import tensorflow as tf
import tensorflow.keras.backend as K

inp1 = tf.keras.layers.Input(shape=(10,))
inp2 = tf.keras.layers.Input(batch_shape=(10,20))
prod_out = tf.keras.layers.Lambda(lambda x: K.dot(K.prod(x[0],axis=1, keepdims=True), K.prod(x[1],axis=0, keepdims=True)))([inp1, inp2])
model = tf.keras.models.Model([inp1,inp2], prod_out)
model.summary()
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.