2017-08-02 24 views
0

我有一個數據矩陣TxM。我的模型需要爲沿T的每個點獲取大小txM的子集。那是我共有(T-t)*(txM)數據來處理。每個選擇都可以實際獨立處理,其結果必須收集到存儲中。以下是我目前的工具,我認爲這不是最好的。從Tensorflow中的數據獲取重疊子集

# D is a tensor os shape TxM 
idx = tf.placeholder(shape=(), tf.int32) 
slice = tf.slice(D, [idx, 0], [t, M]) 
for t in range(T-t): 
    res = sess.run([my_op], feed_dict={idx: t}) 
    collection.append(res) 

我相信必須有更好的方式來並行運行my_op。每個操作都是獨立的,可以放在GPU中。任何想法加快程序?

+0

可以構造圖和feed_dict在一個循環中,並調用'集合= sess.run循環(my_op_list,idx_dict)'外 –

回答

0

可以使用tf.extract_image_patches以獲得重疊的子集:

tf.squeeze(tf.extract_image_patches(X[tf.newaxis,:,:,tf.newaxis], ksizes=(1,t,1,1), strides=(1,1,1,1), rates=(1,1,1,1), padding='VALID'))