我正在尝试建立DNN进行分类,并且有一次我想将向量的张量积与自身相乘。我目前正在使用Keras功能API,但尚不清楚是否已经有一个层可以执行此操作。
我一直在尝试使用Lambda层和numpy来尝试此操作,但是它不起作用。
进行一些谷歌搜索发现
tf.linalg.LinearOperatorKronecker
,这似乎也不起作用。
这是我尝试过的:
我有一个称为part_layer
的层,其输出是单个向量(秩为1的张量)。
keras.layers.Lambda(lambda x_array: np.outer(x_array, x_array),) ( part_layer) )
理想情况下,我希望它采用[1,2]
形式的向量并给我[[1,2],[2,4]]
。
但是我收到的错误提示np.outer
函数无法识别其参数:
AttributeError: 'numpy.ndarray' object has no attribute '_keras_history
关于下一步尝试的任何想法,或者是否有简单的功能可供使用?
答案 0 :(得分:1)
您可以使用两种操作:
如果要考虑批量大小,可以使用the Dot function
否则,您可以使用the dot function
在两种情况下,代码都应如下所示:
dot_lambda = lambda x_array: tf.keras.layers.dot(x_array, x_array)
# dot_lambda = lambda x_array: tf.keras.layers.Dot(x_array, x_array)
keras.layers.Lambda(dot_lamda)( part_layer)
希望获得帮助。