Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 如何为keras层编写lambda函数,用于向量矩阵乘法_Tensorflow_Machine Learning_Keras_Keras Layer - Fatal编程技术网

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

Tensorflow 如何为keras层编写lambda函数,用于向量矩阵乘法,tensorflow,machine-learning,keras,keras-layer,Tensorflow,Machine Learning,Keras,Keras Layer,在点的情况下,它采用点积,数学上定义为:a.b=suma_i*b_i,但如何在keras中为a*b=product a_i*b_i编写lambda函数并将此输入转发到下一层您可以执行以下操作。基本上,我们做的是一个无10码输入和一个10,20码输入的点积乘法。这将导致无20个大小的输出 import numpy as np import tensorflow as tf import tensorflow.keras.backend as K inp1 = tf.keras.layers.In

在点的情况下,它采用点积,数学上定义为:a.b=suma_i*b_i,但如何在keras中为a*b=product a_i*b_i编写lambda函数并将此输入转发到下一层

您可以执行以下操作。基本上,我们做的是一个无10码输入和一个10,20码输入的点积乘法。这将导致无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()

输入ShapeOne,75,下一层shape75,3和输出层shape3,1,其中最后一层必须计算为H31*w1*H32*w2*H33*w3@karunreddy你想做什么还不清楚。更新您的问题,更清楚地解释预期的输入/输出形状以及h31、w1、h32、w2。。。是。输入shapeOne,75,下一层隐藏层1的形状是75,3,下一层隐藏层2的形状是3,1。对于最后一层,输出必须计算为H21*w1*H22*w2*H23*w3,其中H21、H22、H23将是隐藏层2的结果,w1、w2、w3将是不可训练的恒定权重。那么如何为上述结果编写lambda函数。