2016-10-26 158 views
1

我想知道如何將張量表中的張量傳遞給張量流中的張量。我能夠傳遞[batch_size,seq_len]的數組,其中每個項目只是一個數字。但現在我有一個列表的列表還外形(batch_size時,seq_len]但我怎麼通過這個在將張量表傳遞給張量流

我試過這樣:

self.inputs_X = [tf.placeholder(tf.int32, shape=[None, None], 
       name='inputs_X{0}'.format(i)) for i in xrange(SEQ_LEN)] 

(*什麼辦法可以做到這一點沒有明確地傳遞在SEQ_LEN)

首先在tf.int32的,是沒有意義的,因爲我不再在一個int傳遞,即時通訊在列表passsing所以,我得到這個錯誤:?

ValueError:設置一個序列的數組元素。

感謝幫助!

回答

1

TensorFlow相當於「x列表」,用於增加現有張量的維數。

例如如果你傳遞了一個[1,2,3,4,5]的列表,並且你現在想要傳入這些列表,那麼你將維數增加1,最後得到一個矩陣(又名維數爲2的張量)。

tf.int32仍然有意義,因爲您的張量仍然完全包含整數。

這很難說,但我認爲你可以簡單地爲你的形狀參數添加一個額外的元素,例如, tf.placeholder(tf.int32, shape=[None, None, SEQ_LEN])(如果合適,用SEQ替換SEQ_LEN)。我還沒有看到數據,因此SEQ_LEN可能也需要處於不同的位置。

另一種策略是將列表清單整合到一個列表中,然後使用tf.reshape將其更改爲您需要的矩陣或更高維的形狀。

+0

好吧,我決定去形狀= [無,無,無],這很好地工作! 但是我一直在努力以這種形式與我的任務搏鬥,但我無法弄清楚。比方說,我嵌入了我的輸入,現在我的形狀[64 X 41 X 395 X 500]。這是64(batch_size),41(seq_len),395(每個項目中的事件),500(嵌入來表示每個事件)。 –

+0

我試圖創建的結果是[64 X 41 X 500],這意味着對於每個小例子而言,我仍然擁有所有41個項目,但是對於每個項目,我將擁有500個浮動嵌入表示。我們減少到500個,因爲我將爲每個項目取395 X 500,計算平均值。現在這裏是棘手的部分,對於每個單個案例(行),我有一個張量,看起來像這樣,其中每一行的大小爲41: [9 0 0 0 ... 0 0] [9 8 0 0 ... 0 0] ... –

+0

因此,對於我的小批次中的第一個單例,9表示從395中取前9個項目並對其進行平均。 因此,這創建了1X41X500,其中只有第一列有任何值,其餘爲零。 然後,對於我的小批次中的第二種情況,[9,8,0,... 0]表示從第1/41 395開始的前9個項目並取其平均值。 –