我希望在形状[a,b,c]的张量中多个元素,每个在第三维中具有来自形状张量[a,b]的标量。
例如,
x =
|[1,2][3,4][5,6]|
|[1,2][3,4][5,6]|
|[1,2][3,4][5,6]|
y =
|0 0 1|
|1 0 0|
|0 1 0|
我想将x和y相乘得到:
res =
|[0,0][0,0][5,6]|
|[1,2][0,0][0,0]|
|[0,0][3,4][0,0]|
你能告诉我任何实现这个目标的方法吗?
P.S:也许我可以y'
来y
y' =
|[0,0][0,0][1,1]|
|[1,1][0,0][0,0]|
|[0,0][1,1][0,0]|
然后我可以使用tf.mul()
来获得结果。但是我没有找到任何以这种方式复制张量元素的东西。
答案 0 :(得分:2)
你是对的,你可以使用tf.mul()
。实际上,TensorFlow中的乘法运算处理broadcasting,因此您不需要创建另一个形状为[a, b, c]
的向量。
要确保广播符合预期尺寸,您可以为第二个向量y
添加第三个维度:
x = tf.random_normal([3, 3, 2])
y = tf.constant([[0., 0., 1.], [1., 0., 0.], [0., 1., 0.]])
y = tf.expand_dims(y, 2) # y will now have a matching shape of [3, 3, 1]
res = tf.mul(x, y)
sess = tf.Session()
sess.run(res)