Python 将tensorflow中两个不同等级的占位符相乘
我有两个尺寸如下的唱盘Python 将tensorflow中两个不同等级的占位符相乘,python,tensorflow,Python,Tensorflow,我有两个尺寸如下的唱盘 x_ph = tf.placeholder(tf.float32,[None, 4]) 及 我想将x的每个元素与y\u ph的一行相乘,得到形状(无,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]]) ([[[
x_ph = tf.placeholder(tf.float32,[None, 4])
及
我想将x
的每个元素与y\u ph
的一行相乘,得到形状(无,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中实现这一点?在
x\u ph
的末尾添加一个维度,这样您就可以使用广播将两个张量相乘:
将tensorflow导入为tf
x_ph=tf.placeholder(tf.float32,[None,4])
y_ph=tf.placeholder(tf.float32,[None,4,3])
结果=tf.展开直径(x\u ph,-1)*y\u ph
在x\u ph
的末尾添加一个维度,以便您可以使用广播将两个张量相乘:
将tensorflow导入为tf
x_ph=tf.placeholder(tf.float32,[None,4])
y_ph=tf.placeholder(tf.float32,[None,4,3])
结果=tf.展开直径(x\u ph,-1)*y\u ph
谢谢,它工作得很好,但我必须添加tf。reduce_sum(result,axis=1)@AlirezaMoradzadeh啊好的,我以为你想要输出shape(None,4,3)
。谢谢,它工作得很好,但我必须添加tf。reduce_sum(result,axis=1)@AlirezaMoradzadeh啊好的,我以为你想要输出shape(None,4,3)
。
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]]