如何在矩阵乘法mannar中比较列是否等于?

时间:2017-04-24 14:55:44

标签: tensorflow keras matrix-multiplication

我正在使用Keras(tensorflow作为后端)。我想要做的是编写一个lambda图层,它获得2张量输入,使用Indicator函数比较它们的2列的每个组合,并生成一个0-1值的新张量。这是一个例子。

输入: x = K.variable(np.array([[1,2,3],[2,3,4]])),            y = K.variable(np.array([[1,2,3],[2,3,4]]))

输出 z=K.variable(np.array[[1,0],[0,1]])

据我所知,tensorflow提供tf.equal()以元素方式比较张量。但如果我在这里申请,我会

>>> z=tf.equal(x,y)
>>> K.eval(z)
array([[True,  True, True],
       [True,  True, True]], dtype=bool)

它只比较相同位置的张量。

所以我的问题是:

1。是否有张量流API来获取我想要的输出,或者我是否需要编写自己的函数来完成它?

2. 如果是后者,那么还有另一个问题。我注意到在 keras 中输入是小批量的,因此输入格式如下:(None, m, n)。在编写自己的方法时,如何处理第一维,即None

任何回复都将不胜感激!

1 个答案:

答案 0 :(得分:3)

您可以使用broadcasting

import numpy as np
import tensorflow as tf

x = tf.constant(np.array([[1,2,3],[2,3,4]]))
y = tf.constant(np.array([[1,2,3],[2,3,4]]))

x_ = tf.expand_dims(x, 0)
y_ = tf.expand_dims(y, 1)
res = tf.reduce_all(tf.equal(x_, y_), axis=-1)

sess = tf.Session()
sess.run(res)