python - tensorflow: multiply certain rows of a matrix with certain columns in another -
suppose have matrix a , matrix b. know tf.matmul(a,b) can calculate multiplication of 2 matrices. have task requires multiplying rows of a columns of b.
for example, have list of row ids of a, ls_a=[0,1,2], , list of column ids of b, ls_b=[4,2,6]. want result list, denoted ls, such that:
ls[0] = a[0,:] * b[:,4] ls[1] = a[1,:] * b[:,2] ls[2] = a[2,:] * b[:,6]   how can achieve this?
thank helping me!
you can tf.gather follows: 
import tensorflow tf a=tf.constant([[1,2,3],[4,5,6],[7,8,9]]) b=tf.constant([[1,0,1],[1,0,2],[3,3,-1]])  #taking rows 0,1 a, , columns 0,2 b ind_a=tf.constant([0,1]) ind_b=tf.constant([0,2])  r_a=tf.gather(a,ind_a)  #tf.gather access rows, use tf.transpose access columns r_b=tf.transpose(tf.gather(tf.transpose(b),ind_b))  # diagonal elements of multiplication res=tf.diag_part(tf.matmul(r_a,r_b)) sess=tf.interactivesession() print(r_a.eval()) print(r_b.eval()) print(res.eval())   this prints
#r_a [[1 2 3]  [4 5 6]]  #r_b [[ 1  1]  [ 1  2]  [ 3 -1]]  #result [12  8]      
Comments
Post a Comment