如何比较矩阵乘法 mannar 中的列是否相等?
How can I compare if column equals in a matrix multiplication mannar?
我正在使用 Keras(tensorflow 作为后端)。我想要做的是编写一个获取 2 个张量输入的 lambda 层,并使用 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. 是否有tensorflow API 可以得到我想要的输出,或者我是否需要自己编写函数来完成它?
2.如果是后一种,那又是一个问题。我注意到在 keras 中输入是小批量的,所以输入格式看起来像:(None, m, n)
。在编写自己的方法时,如何处理第一个维度,即 None
?
任何答复将不胜感激!
你可以使用 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)
我正在使用 Keras(tensorflow 作为后端)。我想要做的是编写一个获取 2 个张量输入的 lambda 层,并使用 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. 是否有tensorflow API 可以得到我想要的输出,或者我是否需要自己编写函数来完成它?
2.如果是后一种,那又是一个问题。我注意到在 keras 中输入是小批量的,所以输入格式看起来像:(None, m, n)
。在编写自己的方法时,如何处理第一个维度,即 None
?
任何答复将不胜感激!
你可以使用 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)