将两个不同等级的占位符相乘成十

2024-04-26 17:43:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个标牌,尺寸如下

x_ph = tf.placeholder(tf.float32,[None, 4]) 

以及

y_ph = tf.placeholder(tf.float32,[None, 4, 3])

我想将x的每个元素与y_ph的一行相乘,得到一个(None, 4, 3)形状的输出

我正在寻找的输出示例

x = np.random.uniform(-1,1, (2,2))
z = np.random.uniform(-1,1, (2,2,3))
x, z

([[ 0.27083503, -0.13795923],[ 0.8436118 ,  0.00771057]])

([[[ 0.51905276,  0.01173655, -0.57335926],
[ 0.42347431, -0.05438272,  0.21042366]]
[[ 0.91347706, -0.28086164,  0.54952429],
[ 0.41551953, -0.6207727 ,  0.32066292]]]))

我想做以下操作:

result = np.zeros((2,3))
for i in range(2):
    for j in range(2):
        result[i] += x[i,j]*z[i,j,:]
print(result)
[[ 0.08215548  0.01068127 -0.18431566]
 [ 0.77382391 -0.2417247   0.46605767]]

有什么方法可以用tensorflow来做吗


Tags: innone元素for尺寸tfnprange
1条回答
网友
1楼 · 发布于 2024-04-26 17:43:03

x_ph的末尾添加一个维度,这样就可以使用广播将两个张量相乘:

import tensorflow as tf
x_ph = tf.placeholder(tf.float32,[None, 4])
y_ph = tf.placeholder(tf.float32,[None, 4, 3])
result = tf.expand_dims(x_ph, -1) * y_ph

相关问题 更多 >