tensorflow 两个矩阵逐元素相乘在轴 = 0, (M,k) * (M,l) --> (M,k*l)
tensorflow two matrix elementwise multiply in axis = 0, (M,k) * (M,l) --> (M,k*l)
我有两个矩阵,F(shape = (4000, 64)) 和 M(shape=(4000,9))
并希望得到形状 = (4000,64*9)
的结果
我可以用下面的代码来考虑for循环(理想)
result = np.zeros(4000,64*9)
ind = 0
for i in range(64):
for j in range(9):
result[:,ind]= tf.muliply(F[:,i]),M[:,j])
ind += 1
但我知道 tensorflow 不支持 For Loop
是否有与上述代码执行相同功能的函数?
编辑)
我想出了一个主意。 F,M 重复形状 (4000,64*9) [liek repmat in MATLAB] 并按元素相乘。
您还有其他想法吗?
如果您将输入重塑为 F(shape = (4000, 64, 1))
和 M(shape=(4000,1, 9))
,则可以使用 tf.matmul
。举个例子,
F = tf.Variable(tf.random_uniform(shape=(4000, 64, 1)))
M = tf.Variable(tf.random_uniform(shape=(4000, 1, 9)))
C = tf.matmul(F, M)
C = tf.reshape(C, (4000, -1))
sess = tf.InteractiveSession()
tf.global_variables_initializer().run()
print(C.eval().shape)
#Output: (4000, 576)
你可以使用
tf.reshape(M[:,tf.newaxis,:] * F[...,tf.newaxis], [4000,-1])
我有两个矩阵,F(shape = (4000, 64)) 和 M(shape=(4000,9)) 并希望得到形状 = (4000,64*9)
的结果我可以用下面的代码来考虑for循环(理想)
result = np.zeros(4000,64*9)
ind = 0
for i in range(64):
for j in range(9):
result[:,ind]= tf.muliply(F[:,i]),M[:,j])
ind += 1
但我知道 tensorflow 不支持 For Loop
是否有与上述代码执行相同功能的函数?
编辑)
我想出了一个主意。 F,M 重复形状 (4000,64*9) [liek repmat in MATLAB] 并按元素相乘。 您还有其他想法吗?
如果您将输入重塑为 F(shape = (4000, 64, 1))
和 M(shape=(4000,1, 9))
,则可以使用 tf.matmul
。举个例子,
F = tf.Variable(tf.random_uniform(shape=(4000, 64, 1)))
M = tf.Variable(tf.random_uniform(shape=(4000, 1, 9)))
C = tf.matmul(F, M)
C = tf.reshape(C, (4000, -1))
sess = tf.InteractiveSession()
tf.global_variables_initializer().run()
print(C.eval().shape)
#Output: (4000, 576)
你可以使用
tf.reshape(M[:,tf.newaxis,:] * F[...,tf.newaxis], [4000,-1])