我想對可變輸入大小進行卷積。爲了實現這個目標,我使用的。然而批量大小,其中一個節點是需要輸入的形狀爲一個列表ksize
一個最大池節點:TensorFlow提供一個整數
pooled = tf.nn.max_pool(
h,
ksize=[1, self.input_size - filter_size + 1, 1, 1],
strides=[1, 1, 1, 1],
padding='VALID',
name="pool")
現在,顯然input_size可從輸入(這是一個佔位符)推斷:
self.input_x = tf.placeholder(tf.int32, [None, None], name="input_x")
但是我不能使用self.input_x.get_shape()[0]
因爲形狀是動態的。所以我打算在每一步將feed_dict作爲輸入大小。但是,我無法弄清楚如何在feed_dict中傳遞一個整數。每一個佔位符是一個張量,所以,如果我做的:
self.input_size = tf.placeholder(tf.int32, shape=(), name="input_size")
我會做self.input_size.eval()
得到int值,這給了我,我需要養活input_size
錯誤。我想這是因爲eval在訓練步驟發生之前觸發了計算,此時input_size沒有值。
有沒有一種方法可以動態地獲得計算輸入形狀的操作或將整數傳遞給訓練步驟的方法?
它仍然返回張量的列表。我需要第二維的實際值(整數),並在運行時。這就是爲什麼我想「喂」這個參數,但是,它看起來像我只能喂Tensors? –
你可以用「input_size = tf.placeholder(tf.int32)」提供一個整數嗎?它適用於我,但我在TF r0.8,我沒有嘗試最新版本。對於張量列表的問題,我修改了我的答案。我不明白爲什麼,但tf.pack ksize陣列應該可以工作... – Corentin
這是TF中的一個問題。無論你做什麼 - ksize將在施工時進行評估,所以這是不可實現的。 –