0
concat = tf.concat([query_rep, title_rep, cos_similarity], axis=1)
print(concat.shape[1].value)
# query_rep + title_rep + cos_similarity
hidden_size = concat.shape[1]
我發現我不能得到CONCAT形狀,它將返回None
。我必須專門爲hidden_size
賦值,例如hidden_size=201
。我怎樣才能自動獲取形狀?
另外,對於我的CNN
網絡,我想填充每批中的輸入序列而不是整個數據集。所以我必須做出max_len
a placeholder
,但後來我發現placeholder
不能作爲另一個placeholder
的參數。例如以下代碼不起作用
self.max_len = tf.placeholder(int32)
self.query_holder = tf.placeholder(tf.int32, shape=[None, self.max_len])
該怎麼做到的?
第二個解決方案看起來不錯!謝謝,但第一個,'tf.shape(my_tensor)'仍然不能得到形狀,並返回錯誤信息'ValueError異常:initial_value必須指定的形狀:張量(「random_normal:0?」,形狀=(?) ,dtype = float32)'並且不能使用這個形狀創建一個新圖層的參數'h_W = tf.Variable(tf.random_normal(shape = [hidden_size,hidden_size],stddev = 0.1),name ='h_W')' – danche
是的,這是正常的。當你創建一個變量時,必須在編譯時知道該形狀,所以如果該動態形狀具有未知值(如你的那樣),則不能使用另一個張量的動態形狀作爲新變量的形狀。你必須事先知道'hidden_size',你通常會這樣做,因爲這是你的架構的設計選擇。 – kaufmanu