2017-06-29 4 views
1

などのベクター、私は次のコードTensorflow - CONV機能のtf.matmulとバッチMATMUL

batch_size= 128 
c1 = tf.zeros([128,32,32,16]) 
c2 = tf.zeros([128,32,32,16]) 
c3 = tf.zeros([128,32,32,16]) 

c = tf.stack([c1, c2, c3], 4) (size: [128, 32, 32, 16, 3]) 

alpha = tf.zeros([128,3,1]) 

M = tf.matmul(c,alpha) 

を試してみましたが、それはtf.matmulでエラーになります。

私が望むのは、各サンプルで線形結合alpha[0]*c1 + alpha[1]*c2 + alpha[2]*c3です。バッチサイズが1の場合、このコードは問題ありませんが、どうすればいいですか?

c1,c2,c3を変更する必要がありますか?

答えて

0

私はこのコードが動作すると思います。それを確認した。

import tensorflow as tf 
import numpy as np 

batch_size= 128 
c1 = tf.ones([128,32,32,16]) 
c2 = tf.ones([128,32,32,16]) 
c3 = tf.ones([128,32,32,16]) 

c = tf.stack([c1, c2, c3], 4) 

alpha = tf.zeros([1,3]) 

for j in range(127): 
    z = alpha[j] + 1 
    z = tf.expand_dims(z,0) 
    alpha = tf.concat([alpha,z],0) 


M = tf.einsum('aijkl,al->aijk',c,alpha) 



print('') 

with tf.Session() as sess: 
    _alpha = sess.run(alpha) 
    _M = sess.run(M) 


print('')