2017-06-29 40 views
0

現在訪問向量的元素,我需要計算Tensorflow - 如何,而在我的圖形計算批

z=a1*z1+a2*z2+a3*z3 

其中

z1: size=(?,5) 
z2: size=(?,5) 
z3: size=(?,5) 
a1: size=(?,1) 
a2: size=(?,1) 
a3: size=(?,1) 

這裏?是批量的要計算的尺寸在一個圖中(在構建圖時這是未知的)。

的事情是我沒有a1,a2,a3,但我需要從

a: size=(?,3) 

通過提取它們,種,a1=a[0],a2=a[1],a3=a[2]。但顯然a[k]指的是批次中的第k個樣本,所以此代碼不正確。

那麼我怎樣才能訪問a的第k個元素?

如果我做a1 = a[:,0]是否正確?

+0

你爲什麼要做單獨的元素乘法。你應該做矩陣形式:z = A.T * Z其中A = [a1,a2,a3],Z = [z1,z2,z3] –

+0

@vijaym這當然會更好。但我不知道如何。 – julypraise

回答

1

你不會做單獨的乘法,但在3D矩陣形式。這裏是你可以嘗試的代碼:

# Getting the input data in right size 
batch_size = 10 
z1 = np.random.randint(0,5, (batch_size,5)) 
z2 = np.random.randint(0,5, (batch_size,5)) 
z3 = np.random.randint(0,5, (batch_size,5)) 
z = [z1, z2, z3] 
z = np.reshape(z, (batch_size, 5, 3)) 
a = np.random.randint(0, 5, (batch_size, 3)) 
a = np.reshape(a, (batch_size, 3, 1)) 

#Tensorflow graph 
Z = tf.placeholder(tf.int32, [None, 5, 3]) 
A = tf.placeholder(tf.int32, [None, 3, 1]) 
out = tf.squeeze(tf.matmul(Z, A)) 

with tf.Session() as sess: 
    result = sess.run(out, feed_dict={Z:z, A:a}) 

我希望這是你打算做的。